더북(TheBook)

NOTE say 변수를 숫자형으로 바꾼다면?

say가 문자열이고 i가 숫자형이기 때문에 앞에서는 i를 문자열로 변경했습니다. 이때 say를 숫자형으로 바꾸면 어떻게 될까요? 일부 입력에서 오류가 발생합니다. 예를 들어, 숫자를 입력해야 하는데 ‘짝’을 입력하는 경우입니다. 코드를 변경하고 실행해 봅시다.

print('3~ 6~ 9~ 369~ 3~ 6~ 9~ 369~ ')
for i in range(1, 101):
    say = input()
    if '3' in str(i) or '6' in str(i) or '9' in str(i):
        if say != '짝':
            print('틀렸습니다!')
            break
    else:
        if int(say) != i:
            print('틀렸습니다!')
            break
실행결과
2 대신 '짝'을 입력한 경우 
3~ 6~ 9~ 369~ 3~ 6~ 9~ 369~
1

---------------------------------------------------------------------------
---> 9         if int(say) != i:
ValueError: invalid literal for int() with base 10: '짝'

숫자 입력 순서에 ‘짝’을 입력하니 오류가 납니다. ValueError는 값과 관련된 오류로, 3장에서 접한 적이 있습니다. 오류 내용을 해석해 보니 “int()에 유효하지 않은 글자”라고 합니다. 이는 문자열인 ‘짝’을 저장한 sayint()로 감싸도 정수형으로 바꿀 수 없어서 생긴 오류입니다. 하지만 숫자가 저장된 i는 문자열로 바꿀 수 있으므로 say != str(i)로 비교하는 것이 옳은 방법입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.