파이썬에서 데이터 형태는 서로 변환할 수 있다.

 

 

 

암시적 형변환 (implicit)

자료손실이 일어나지 않는 경우에는 사용자가 의도하지 않고 파이썬 내부적으로 자동으로 자료형을 변환한다.

print(True+1) #2

True(boolean형) 가 1으로 자동으로 형변환 되어 1+1 연산하였다.

 

print(3+1.0) #4.0

정수형(int형) 3과 실수형(float형) 1.0를 덧셈하였다. 3을 자동으로 실수형으로 형변환되었고 결과는 실수형인 4.0이 출력된다.

 

 

 

 

명시적 형변환 (explicit)

사용자가 특정 함수를 이용하여 의도적으로 자료형을 변환한다.

 

1. int()

문자열(str), 실수(float) 타입을 정수형(int)로 형변환한다. 

형식에 맞는 문자열만 정수로 변환가능하다.

 

print('1'+1) #TypeError

문자열 '1'과 정수 1은 계산할 수 없기 때문에 에러가 뜬다.

 

print(int('1')+1) #2

int()으로 문자열 1을 정수로 바꾸어 계산한였다.

 

print(int('1.0')+1) #ValueError

'1.0'은 정수형태의 문자열이 아닌 실수형태이기 때문에 int()으로 변환할 수가 없고 에러가 뜬다.

 

number = input('숫자입력')
print(type(number)) #class 'str'

input()으로 사용자 입력을 받으면 모두 문자열로 저장된다.

 

 

a, b = map(int, input().split())

map으로 리스트 요소를 한번에 int형으로 변환할 수 있다.

 

 

 

2. float()

형식에 맞는 str, int 형을 실수형 float로 변환 가능하다. 

print(float('3')) #3.0

정수 형태의 문자열도 바로 float 형식으로 변환 가능하다.

int에서 float 변환은 항상 가능하다.

 

 

 

 

3. str()

int, float, list, tuple, dict 형을 문자열 형태로 변환할 수 있다.

 

 

 

4. chr()

유니코드에 맞춰 문자 형태로 변환한다.

print(chr(65)) #A

65는 A가 된다. 

 

 

 

 

5. bool() 

print(bool(0)) #False
print(bool(1)) #True
print(bool(3)) #True

정수형은 0 은 False, 그 외는 True가 된다.

 

 

print(bool(0.0)) #False
print(bool(1.0)) #True

실수형은 0.0이 False 이다.

 

 

print(bool('')) #False
print(bool('hello')) #True

빈 문자열은 False이다.