파이썬 에러 : invalid literal for int() with base 10

[CodeUp] 6081:[기초-종합] 16진수 구구단 출력하기

CodeUp 6081 문제를 풀면서 오류가 발생하였다.

[문제]

A, B, C, D, E, F 중 하나가 입력될 때, 1부터 F까지 곱한 16진수 구구단의 내용을 출력해보자.

입력값은 하나의 문자를 받아야 하며 결과값은 이렇게 나와야 한다.

B1=B
B
2=16
B3=21
B
4=2C
B5=37
B
6=42
B7=4D
B
8=58
B9=63
B
A=6E
BB=79
B
C=84
BD=8F
B
E=9A
B*F=A5

[Error Code]

이를 해결하기 위해 코드를 작성해 보았는데 1번째 Line에서 오류발생~!

a = int(input())

for i in range(1, 16):
    print('%X' %a, '*%X' %i, '=%X' %(a*i), sep='')

[WHY??]

입력값을 integer 형변환을 시키고 a에 저장했으며, for 반복문을 통해 출력해주게끔 했지만 ValueError가 발생하였다. WHY??

검색을 해보니 파이썬 형변환 에러...... 파이썬을 겉핥기식으로 접하다가 다시 처음부터 하다보니 이런 별것도 아닌 에러가 났다.

파이썬에서는 형변환을 할 때

문자형은 str()
정수형은 int()
실수형은 float()

이러한 방식으로 해주는데.. 일단 내가 입력값을 받으면서 int() 형변환은 잘 했다.
BUT!! 실수형을 int()할 경우 문제없이 돌아가지만, 문자형을 int()할 경우 내가 겪은 에러와 같은 ValueError이 발생한다.

[HOW??]

따라서 에러를 해결하려면, 실수형의 input값을 정수형으로 변경하는 방식으로 코드를 짠다.

#before
a = int(input())

#after
a = int(input(),16)

**두 번의 실수까지는 OK, BUT 세 번의 실수는 없다.**

좋은 웹페이지 즐겨찾기