코사장의 코딩 놀이터

코딩언어/python

[Python] ValueError: invalid literal for int() with base 10: 'XYZ' 오류 이해 및 해결하기

코사장_ 2024. 4. 23. 22:28
반응형

파이썬에서 데이터 타입 변환을 시도할 때 종종 마주치는 오류 중 하나가 ValueError: invalid literal for int() with base 10: 'XYZ'입니다. 이 오류 메시지는 주로 문자열을 정수형으로 변환하려 할 때 해당 문자열이 정수로 변환될 수 없을 때 발생합니다. 이 글에서는 이 오류의 원인과 해결 방법을 자세히 알아보겠습니다.

오류 발생 원인

int() 함수는 문자열이나 다른 타입의 데이터를 정수로 변환할 때 사용됩니다. 이 함수가 제대로 작동하려면 입력 값이 숫자로만 구성된 문자열이어야 합니다. 다음 예제에서는 오류가 발생하는 상황을 보여 줍니다

number = int("XYZ")  # 'XYZ'는 숫자가 아니므로 오류 발생

 

여기서 "XYZ"는 숫자가 아닌 문자열이기 때문에 int() 함수로는 정수로 변환할 수 없습니다. 따라서 Python은 ValueError를 발생시킵니다.

해결 방법

1. 입력 데이터 확인: 데이터 변환을 시도하기 전에 입력 데이터가 숫자로만 구성되었는지 확인합니다.

2. 예외 처리 사용: try와 except를 사용하여 예외 처리를 할 수 있습니다. 이 방법으로 오류를 관리하고 사용자에게 더 친절한 메시지를 제공할 수 있습니다.

try:
    number = int("XYZ")
except ValueError:
    print("숫자로만 구성된 문자열이 필요합니다.")

 

3.조건문 사용: 입력 데이터가 숫자로만 구성되었는지 먼저 체크하고, 그 후에 변환 작업을 진행합니다.

data = "123"

if data.isdigit():
    number = int(data)
else:
    print("입력값이 숫자가 아닙니다.")

 

ValueError: invalid literal for int() with base 10: 오류는 데이터 변환 과정에서 자주 발생할 수 있습니다. 데이터 타입을 변환하기 전에 입력값을 철저히 검증하고, 예외 처리를 통해 프로그램의 안정성을 높이는 것이 중요합니다. 이러한 방법들을 통해 보다 견고한 코드를 작성할 수 있습니다.

반응형