728x90
ValueError: invalid literal for int() with base 10
오류는 문자열을 int()
함수로 정수형으로 변환하려고 할 때, 해당 문자열이 10진수 정수 형식이 아닌 경우 발생합니다. 특히 사용자 입력을 처리할 때 숫자가 아닌 문자가 포함된 문자열을 변환하려 할 때 자주 발생합니다.
예를 들어 int("42")
는 정상 작동하지만, int("hello")
, int("42.5")
, int("")
등은 모두 ValueError
를 발생시킵니다.
● 오류 발생 예시
user_input = "abc"
number = int(user_input)
문자열 "abc"
는 정수형으로 변환이 불가능하므로 ValueError
가 발생합니다.
ValueError: invalid literal for int() with base 10: 'abc'
● 해결 방법
str.isdigit()
으로 숫자인지 사전 확인try-except
구문을 사용하여 예외 처리- 사용자 입력값을 정제(trim, 공백 제거 등)한 후 처리
● 예시 코드
user_input = input("숫자를 입력하세요: ")
try:
number = int(user_input)
print("입력된 정수:", number)
except ValueError:
print("정수를 입력해야 합니다.")
● 자주 하는 실수
- 소수점, 알파벳, 특수문자가 섞인 문자열을 int로 변환 시도
- 입력값을 strip() 또는 replace() 없이 그대로 변환
- 입력값이 빈 문자열이 될 수 있는 경우를 고려하지 않음
● 결론
ValueError - invalid literal for int() with base 10
오류는 문자열이 정수형 형식이 아닐 때 발생합니다. 입력값을 사전에 검사하거나, 예외 처리로 잘못된 입력을 유연하게 처리하는 것이 중요합니다.
728x90