선미 파이썬 0315 4일차
hiblue
강의내용
''' 문자열 포멧팅 문자열 내에 어떤 값을 삽입하는 방법 문자열 내에서 사용할 값이 변할 때(일반적으로는 변수) 유용 포켓 코드(서식문자) %s 문자열 %c 문자 1개 %d 정수 %f 실수(소수) %o 8진수 %x 16진수 ''' print() print("[문자열 포메팅]") #연산 사용할 때도 "1"+"2"+ "10"#3 문자열 ...? print("정수 : %d" %10) #%d 같은 포멧코드가 문자열에 포함되어 있으면 문자열이 끝난 뒤 % 기호 붙이고, 포멧코드에 들어갈 값을 입력 #이 때 포멧코드의 형식과 값의 형식(type)이 같아야 함. 예를 들어 문자열에 값을 사용하고 싶은데 삽입하고 싶은 게 정수일때는 문자열이 끝나고 나서 문자열이 들어가고 싶은 값을 %를 이용해서 붙여줌 #print와는 관계 없이 사용. print는 완성된 물자열을 출려가는 것 뿐이다. print() my_str = "정수 : %d" %10 print(my_str) #문자열 포멧팅은 프린트함수와 관련이 없다.(중요중요!!!!!) print("실수 : %f" % 10.12) # 소수점 6자리까지 찍히는 이유는 %f가 소수점 6자리까지 출력되기 때문이다. #원래 정수더라도 포멧코드로 출력되는 순간 문자열로 출력된다. print("문자열 : %s" % "문자열!") print("16wlstn : %x" % 16) print("16wlstn : %x" % 0x10) # 어떤 값이 오더라도 16진수 형태로 문자화하겠다 print("(형변한)정수>실수 >> %f" % 10) print("(형변한)실수>정수 >> %d" % 10.123456) # 정수화 하기 때문에 소수점은 날아감, 소수점손실 #print("정수 : %d" % "숫자(str)") #오류!문자열>정수(숫자) print("문자열 : %s" %10) # 파이썬에서 %s는 무엇이든 받을 수 있다. 어차피 문자열로 삽입되기때문에 year = 2018 print("%d년 입니다." % year) #계속해서 수정을 해줘야 하는 경우 변수값으로 포멧팅이 가능함 print("%d년 입니다." % year) year += 1 #복합대입연산자. 원래 =은 우측-좌측으로 대입, year = year+1(>2018+1>2019를 가리킨다. 그러나 year 자체가 변하는 것은 아니다) print("%d년 입니다." % year) year -= 2 print("%d년 입니다." % year) #print("%d개 이상의 %x 넣기" % 2, "문자열") # 이렇게 되면 ,앞까지를 하나로 인식해서 오류가 남 #--print("%d개 이상의 %x 넣기" % (2, "문자열")) print("현재 강수확률은 100%입니다.") print("현재 강수확률은 %d%%입니다." % 100) #print("현재 강수확률은 100%입니다.")는 오류, 포멧팅을 사용하지 않으면 %는 문자로 사용할 수 있지만 포멧팅을 사용한 경우에는 특수한 기능을 갖게 된다, 포멧팅에서 %를 사용하려면 글므로 %%를 두 번 사용하여 %f로 처리되게 한다. print("[포멧코드를 활용한 소수점 표현]") print("기본 6자리, 자동반올림 : %f" % 3.166666) print("소수점 지정 (1) : %.1f" % 3.1235142341) print("[포멧코드를 활용한 정렬과 공백]") print("[%s] [%s]" %("파이썬", "재밌다!")) print("[%10s] [%10s]" %("파이썬", "재밌다!")) # 우측정렬 # %와 서식문자 사이에 정수를 넣으면 그 수만큼 최소 공백을 확보 print("[%-10s] [%-10s]" %("파이썬", "재밌다!")) # 좌측정렬 print() print("[고급 문자열 포메팅]") # 문자열의 format() 함수를 사용 print("제 이름은 {}입니다.". format("김선미")) # 앞에 '.'을 꼭 붙이자 ''' 함수 구분 : ()가 열리고 닫히는 것은 함수. format()함수는 문자열의 함수이므로 .이 온다. 예)sys.getrefcount처럼 .을 사용(getrefcount는 함수) ★문자열의 함수라는 것은 "문자열.함수"가 되어야 함. format() 사용법 : .format{} : print("".format{}) ''' print( "저는 {}살 입니다.".format(20) ) print( "제 이름은 {}고 {}살 입니다.".format("김선미", 20) ) #숫자 없는 { }은 str이므로 반드시 ""를 써주자 print( "제 이름은 {0}고 {1}살 입니다.".format("김선미", 20) ) print( "제 이름은 {1}고 {0}살 입니다.".format("김선미", 20) ) print( "제 이름은 {1}고 {0}살 입니다.".format(20, "김선미") ) #{} 안에 인덱스를 넣지 않으면, 순서대로 값을 가져온다. #{} 안에 인덱스를 넣으면 뒤의 값들의 순서와 일치하지 않아도 원하는 대로 가져올 수 있다. #마찬가지로 변수 사용 가능 name = "rlatjsal" age = 20 print( "제 이름은 {}고 {}살 입니다.".format(name, age) ) #키워드 사용 print( "제 이름은 {n}이고 {a}살 입니다.".format(n=name, a=age) ) # n과 a는 키워드이므로 포멧 안에 원하는 키워드에 맞게 대입해야함 print( "제 이름은 {n}이고 {a}살 입니다.".format(a=age, n=name) ) # 키워드는 인덱스로 사용하는것이므로 위치를 바꿔도 동일하다. print( "제 이름은 {name}이고 {age}살 입니다.".format(age=age, name=name) ) #키워드와 변수가 이름이 같을 때는 앞에 사용한 이름이 키워드가 되고 뒤는 값. a(키워드)=a(값) 근데 값이 변수인것 print( "제 {}은 {name}이고 {}살 입니다.".format("이름", 20, name=name) ) #8. 키워드와 인덱스 혼용 #반드리 키워드는 맨 뒤에 위치해야 한다. (키워드가 들어있는 {}은 인덱스에 포함 안됨) #print( "제 {}은 {name}이고 {}살 입니다.".format("이름", name=name, 20) ) # 오류 print("%s은 %d살" % ("한수창", 20)) print("{}은 {}살".format("한수창", 20)) #포케팅은 문자열(%s)가 만능이기 때문에 문자열을 쓰거나 포멧 함수를 쓰는것이 가장 편리하다. ''' 문자열 포메팅 연습 1. name = "한수창" age = 20 phone = 010-8383-9133 [출력결과] 이름 : 한수창 나이 : 20 전화 : 010-8383-9133 3가지 방법으로 출력하기 1)기본 포메팅 방법 사용(format함수 사용x) 2)format함수 사용 3)포메팅 사용하지 않기 '''
출력값
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. >>> ================ RESTART: C:/Users/HOME/Documents/0315 수업.py ================ >>> ================ RESTART: C:/Users/HOME/Documents/0315 수업.py ================ [문자열 포메팅] 정수 : 10 >>> ================ RESTART: C:/Users/HOME/Documents/0315 수업.py ================ [문자열 포메팅] 정수 : 10 정수 : 10 >>> ================ RESTART: C:/Users/HOME/Documents/0315 수업.py ================ [문자열 포메팅] 정수 : 10 정수 : 10 >>> ================ RESTART: C:/Users/HOME/Documents/0315 수업.py ================ [문자열 포메팅] 정수 : 10 정수 : 10 실수 : 10.120000 >>> # >>> >>> >>> >>> >>> >>> ================ RESTART: C:/Users/HOME/Documents/0315 수업.py ================ [문자열 포메팅] 정수 : 10 정수 : 10 실수 : 10.120000 문자열 : 문자열! 16wlstn : 10 16wlstn : 10 >>> ================ RESTART: C:/Users/HOME/Documents/0315 수업.py ================ [문자열 포메팅] 정수 : 10 정수 : 10 실수 : 10.120000 문자열 : 문자열! 16wlstn : 10 16wlstn : 10 (형변한)정수>실수 >> 10.000000 >>> ================ RESTART: C:/Users/HOME/Documents/0315 수업.py ================ [문자열 포메팅] 정수 : 10 정수 : 10 실수 : 10.120000 문자열 : 문자열! 16wlstn : 10 16wlstn : 10 (형변한)정수>실수 >> 10.000000 (형변한)실수>정수 >> 10 >>> ================ RESTART: C:/Users/HOME/Documents/0315 수업.py ================ [문자열 포메팅] 정수 : 10 정수 : 10 실수 : 10.120000 문자열 : 문자열! 16wlstn : 10 16wlstn : 10 (형변한)정수>실수 >> 10.000000 (형변한)실수>정수 >> 10 문자열 : 10 >>> ================ RESTART: C:/Users/HOME/Documents/0315 수업.py ================ [문자열 포메팅] 정수 : 10 정수 : 10 실수 : 10.120000 문자열 : 문자열! 16wlstn : 10 16wlstn : 10 (형변한)정수>실수 >> 10.000000 (형변한)실수>정수 >> 10 문자열 : 10 2018년 입니다. >>> ================ RESTART: C:/Users/HOME/Documents/0315 수업.py ================ [문자열 포메팅] 정수 : 10 정수 : 10 실수 : 10.120000 문자열 : 문자열! 16wlstn : 10 16wlstn : 10 (형변한)정수>실수 >> 10.000000 (형변한)실수>정수 >> 10 문자열 : 10 2018년 입니다. 2018년 입니다. 2019년 입니다. 2017년 입니다. >>> ================ RESTART: C:/Users/HOME/Documents/0315 수업.py ================ [문자열 포메팅] 정수 : 10 정수 : 10 실수 : 10.120000 문자열 : 문자열! 16wlstn : 10 16wlstn : 10 (형변한)정수>실수 >> 10.000000 (형변한)실수>정수 >> 10 문자열 : 10 2018년 입니다. 2018년 입니다. 2019년 입니다. 2017년 입니다. Traceback (most recent call last): File "C:/Users/HOME/Documents/0315 수업.py", line 50, in <module> print("%d개 이상의 %x 넣기" % ( 2, "문자열")) TypeError: %x format: an integer is required, not str >>> ================ RESTART: C:/Users/HOME/Documents/0315 수업.py ================ [문자열 포메팅] 정수 : 10 정수 : 10 실수 : 10.120000 문자열 : 문자열! 16wlstn : 10 16wlstn : 10 (형변한)정수>실수 >> 10.000000 (형변한)실수>정수 >> 10 문자열 : 10 2018년 입니다. 2018년 입니다. 2019년 입니다. 2017년 입니다. 현재 강수확률은 100%입니다. 현재 강수확률은 100%입니다. [포멧코드를 활용한 소수점 표현] 기본 6자리, 자동반올림 : 3.166666 소수점 지정 (1) : 3.1 [포멧코드를 활용한 정렬과 공백] [파이썬] [재밌다!] [파이썬] [재밌다!] [파이썬] [재밌다!] >>> ================ RESTART: C:/Users/HOME/Documents/0315 수업.py ================ [문자열 포메팅] 정수 : 10 정수 : 10 실수 : 10.120000 문자열 : 문자열! 16wlstn : 10 16wlstn : 10 (형변한)정수>실수 >> 10.000000 (형변한)실수>정수 >> 10 문자열 : 10 2018년 입니다. 2018년 입니다. 2019년 입니다. 2017년 입니다. 현재 강수확률은 100%입니다. 현재 강수확률은 100%입니다. [포멧코드를 활용한 소수점 표현] 기본 6자리, 자동반올림 : 3.166666 소수점 지정 (1) : 3.1 [포멧코드를 활용한 정렬과 공백] [파이썬] [재밌다!] [ 파이썬] [ 재밌다!] [파이썬 ] [재밌다! ] >>> ================ RESTART: C:/Users/HOME/Documents/0315 수업.py ================ [문자열 포메팅] 정수 : 10 정수 : 10 실수 : 10.120000 문자열 : 문자열! 16wlstn : 10 16wlstn : 10 (형변한)정수>실수 >> 10.000000 (형변한)실수>정수 >> 10 문자열 : 10 2018년 입니다. 2018년 입니다. 2019년 입니다. 2017년 입니다. 현재 강수확률은 100%입니다. 현재 강수확률은 100%입니다. [포멧코드를 활용한 소수점 표현] 기본 6자리, 자동반올림 : 3.166666 소수점 지정 (1) : 3.1 [포멧코드를 활용한 정렬과 공백] [파이썬] [재밌다!] [ 파이썬] [ 재밌다!] [파이썬 ] [재밌다! ] [고급 문자열 포메팅] 제 이름은 김선미입니다. >>> ================ RESTART: C:/Users/HOME/Documents/0315 수업.py ================ [문자열 포메팅] 정수 : 10 정수 : 10 실수 : 10.120000 문자열 : 문자열! 16wlstn : 10 16wlstn : 10 (형변한)정수>실수 >> 10.000000 (형변한)실수>정수 >> 10 문자열 : 10 2018년 입니다. 2018년 입니다. 2019년 입니다. 2017년 입니다. 현재 강수확률은 100%입니다. 현재 강수확률은 100%입니다. [포멧코드를 활용한 소수점 표현] 기본 6자리, 자동반올림 : 3.166666 소수점 지정 (1) : 3.1 [포멧코드를 활용한 정렬과 공백] [파이썬] [재밌다!] [ 파이썬] [ 재밌다!] [파이썬 ] [재밌다! ] [고급 문자열 포메팅] 제 이름은 김선미입니다. 저는 20살 입니다. 제 이름은 김선미고 20살 입니다. 제 이름은 김선미고 20살 입니다. 제 이름은 20고 김선미살 입니다. 제 이름은 김선미고 20살 입니다. 제 이름은 rlatjsal고 20살 입니다. 제 이름은 rlatjsal이고 20살 입니다. 제 이름은 rlatjsal이고 20살 입니다. 제 이름은 rlatjsal이고 20살 입니다. 제 이름은 rlatjsal이고 20살 입니다. 한수창은 20살 한수창은 20살 >>>