선미 파이썬 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살
>>>