파이썬 0315 4일차
azuremei
Azuremei (토론 | 기여) 사용자의 2018년 4월 5일 (목) 15:06 판 (새 문서: ==강의내용== <pre> ''' 문자열 포멧팅 문자열 내에 어떤 값을 삽입하는 방법 문자열 내에서 사용할 값이 변할 때(일반적으로...)
강의내용
''' 문자열 포멧팅 문자열 내에 어떤 값을 삽입하는 방법 문자열 내에서 사용할 값이 변할 때(일반적으로는 변수) 유용 포켓 코드(서식문자) %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살 >>>