본문 바로가기
컴퓨터/Python

[파이썬] 파이썬 에러 ValueError: invalid literal for int() with base10: '4.3'


 

 

안녕하세요 한주현입니다.

 

오늘은 파이썬 형변환에서 발생하는 오류인

 

ValueError: invalid literal for int() with base 10: '4.3'

 

에 대하여 알아보겠습니다.

 

 

파이썬에서는 형변환이 간단합니다.


문자형으로 바꿀 때는 str()

정수형으로 바꿀 때는 int()

실수형으로 바꿀 때는 float()

를 각각 사용합니다. 


문자열을 정수로 변환

1
2
3
>>> a = '10'
>>> int(a)
10
cs


문자열을 실수로 변환

1
2
3
>>> b = '4.3'
>>> float(b)
4.3
cs


정수를 문자열로 변환

1
2
3
>>> c = 7
>>> str(c)
'7'
cs


실수를 문자열로 변환

1
2
3
>>> d = 2.71
>>> str(d)
'2.71'
cs



 문제 상황

 

ValueError: invalid literal for int() with base 10: '4.3'


문자열을 정수로 바꾸려고 int함수를 사용하였는데,


아래와 같이 ValueError 가 발생하였습니다.


1
2
3
4
5
>>> e = '4.3'
>>> int(e)
Traceback (most recent call last):
  File "<stdin>", line 1in <module>
ValueError: invalid literal for int() with base 10'4.3'
cs


어떻게 된 일일까요??


 



 해결 방법


int 함수는 정수문자열(interger string, "3.14" 과 같은), 실수(float, 6.02)를 인자로 받기를 기대합니다만


예시와 같이 실수문자열(float string)은 넣게 되면 ValueError 가 나게 됩니다.


그렇다면 어떻게 하면 정수로 바꿀 수 있을까요?


먼저 바꾸려는 실수문자열을 float함수를 사용하여 실수로 바꿉니다.


그 다음 실수를 int함수를 사용하여 정수로 바꾸면 됩니다.


1
2
3
4
5
>>> e = '2.71'
>>> float(e)
2.71
>>> int(float(e))
2
cs


소수점부분이 잘려나가서 정수만 남게 되었군요 ㅎㅎ

반올림의 개념이 아닌 정수부분만 남게 된것에 주목해주세요!


오늘의 포스팅이 여러분들께 도움이 되셨으면 좋겠네요


그럼 다음 시간에 만나요!