WeniVooks

검색

견고한 파이썬

형변환

1. Python에서의 형변환

형변환은 데이터의 타입을 다른 타입으로 바꾸는 과정을 의미합니다. 예를 들어보도록 하겠습니다.

월급 = input("월급을 입력하세요:") 연봉 = 월급 * 12 print(f'당신의 연봉은 {연봉}입니다.')

만약 입력을 100을 했다면 아래 연봉 값은 1200이 아니라 100100100...이 출력되게 됩니다. 해당 코드는 월급으로 연봉을 계산하려는 의도였기 때문에 제대로 연산이 된 것이라 볼 수 없습니다. 이것을 제대로 연산하게 하려면 곱셈을 할 때 월급은 정수형이나 실수형이었어야 합니다. input 함수는 사용자에게 입력 받은 값을 문자열로 처리하기 때문에 형태를 변경시켜 아래와 같이 실행되게 해야 합니다.

월급 = input("월급을 입력하세요:") 연봉 = int(월급) * 12 print(f'당신의 연봉은 {연봉}입니다.')

2. 형변환 정리

주요한 형변환 메서드는 아래와 같습니다. 아직 배우지 않은 list, tuple, dict, set은 개별 챕터에서 다루도록 하겠습니다.

Built-in Function 기능
int() 정수로 변환
str() 문자열로 변환
float() 실수로 변환
list() 리스트로 변환
tuple() 튜플로 변환
dict() 딕셔너리로 변환
set() 셋으로 변환
2.1 int로 형변환
2.1.1 str에서 int로 변환
num = '123' print(type(num)) num = int(num) print(type(num))

위 예제는 문자열을 정수형으로 바꾸고 있습니다. 다만 아래와 같은 코드는 가능하지 않습니다.

s = '10hello' s = int(s) # Error
2.1.2 float에서 int로 변환
f = 3.14159 number = int(f) print(number) # 출력: 3

float형을 정수로 변환하면 소수점 아래의 값이 버려집니다.

2.1.3 bool에서 int로 형변환
true_int = int(True) false_int = int(False) print(true_int) # 출력: 1 print(false_int) # 출력: 0

bool 값을 int로 변환했을 때에는 True1, False0으로 출력됩니다.

None은 int형으로 변환이 가능하지 않습니다.

2.2 string으로 형변환
2.2.1 int와 float에서 str으로 변환
n = str(123) print(123, n) print(type(n)) m = str(123.4) print(123.4, m) print(type(m))

여기서 주의해야 할 것은 int형은 str으로 변환했다가 다시 int형으로 변경하는 것이 문제가 되지 않지만 float형은 str으로 변환했다가 int형으로 변환했을 경우 error가 발생되게 됩니다. 닷(.)을 자동으로 인식해주지 않습니다.

2.3 bool형으로 형변환

bool() 함수는 다양한 파이썬 데이터 타입을 True 또는 False 값으로 변환합니다. 특히 조건문, 반복문에서 다양한 자료형을 True 또는 False로 판단하는지 아는 것은 매우 중요합니다.

print("bool('test'):", bool('test')) print("bool(' '):", bool(' ')) print("bool(''):", bool('')) # False print("bool(100):", bool(100)) print("bool(1):", bool(1)) print("bool(0):", bool(0)) # False print("bool(-1):", bool(-1)) print("bool(None):", bool(None)) # False print("bool([]):", bool([])) # False print("bool(tuple()):", bool(tuple())) # False print("bool({}):", bool({})) # False print("bool(set()):", bool(set())) # False

False인 것만 주석을 달아두었습니다. 빈 자료형에 경우에는 False로 평가된다는 점을 기억해주세요. 2번째 예시인 ' '는 안에 공백이 존재하기 때문에 빈 자료형이 아닙니다.

2.4 float형으로 형변환
2.4.1 일반 float 형변환

이번에는 float로 형변환 하는 것을 알아보도록 하겠습니다.

s = 10 print(float(s)) s = '10' print(float(s)) s = '3.14' print(float(s))

정수의 값, 문자열 안에 정수로 입력된 값, 문자열 안에 실수로 입력된 값은 모두 실수로 변환이 가능합니다.

2.4.2 특수 float 형변환

'inf', '-inf', 'nan' 같은 특별한 문자열은 float()를 사용해 변환할 수 있습니다. 이들은 각각 무한대(infinity), 음의 무한대 및 숫자가 아닌 것(Not a Number)을 나타냅니다. 이러한 특별한 문자 형변환은 대소문자를 가리지는 않습니다.

infinity = float('inf')
neg_infinity = float('-inf')
not_a_number = float('nan')
infinity = float('inf')
neg_infinity = float('-inf')
not_a_number = float('nan')
2.4.3 묵시적 형변환

다음과 같이 정수와 실수의 나눗셈 같은 경우 항상 float를 반환합니다.

10 / 1 # 출력: 10.0
10 / 1 # 출력: 10.0
{"packages":["numpy","pandas","matplotlib","lxml"]}
4.8 메서드 체이닝4.10 연습문제