파이썬 기초 질문 ) 진수변환 프로그램 ) int() can't convert non-string with explicit base
조회수 6026회
select= int(input("진수결정(16/10/8/2):"))
num=input("값 입력:")
if select !=2 and select != 8 and select != 16 and select != 10 :
print("16,10,8,2 숫자 중 하나만 입력하세요")
exit()
elif select == 16:
num10=int(num,16)
elif select == 10:
num10=int(num,10)
elif select == 8:
num10=int(num,8)
elif select == 2:
num10=int(num,2)
print("16진수 ==>", hex(num10))
print("10진수 ==>", num10)
print("8진수 ==>", oct(num10))
print("2진수 ==>", bin(num10))
# num10="" (16=hex=str이니까?)_
select= int(input("진수결정(16/10/8/2):"))
num=int(input("값 입력:"))
if select == 16:
num10=int(num,16)
elif select == 10:
num10=int(num,10)
elif select == 8:
num10=int(num,8)
elif select == 2:
num10=int(num,2)
else :
print("16,10,8,2 숫자 중 하나만 입력하세요")
exit()
print("16진수 ==>", hex(num10))
print("10진수 ==>", num10)
print("8진수 ==>", oct(num10))
print("2진수 ==>", bin(num10))
어떤 식으로 고쳐야되고 어떤 부분에서 틀린건가요? 두 코드다 run안되는 이유를 모르겠숴여,,,
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
2 답변
-
일단 오류의 원인은 num 이 숫자형이기 때문입니다.
num=input("값 입력:")
파이썬 버전 2와 3이 조금 다른 부분인데 2.x에서 input 은 데이터형을 판단을 했습니다만 3.x에서 input 은 그냥 문자열로 받습니다.
int(문자형, 숫자형) 즉 int('A', 16) 은 10 입니다.
-
감사합니다! num를 숫자형으로 받지 않고 그냥 받으면 되네요! 이렇게 수정했습니다
sel = int(input("입력변수 결정 (16/10/8/2) :"))
sel = int(input("입력변수 결정 (16/10/8/2) :")) if (sel != 2) and (sel != 8) and (sel != 10) and (sel != 16): print("16,10,8,2 숫자 중 하나만 입력하세요!") exit() num = input("값 입력 : ") print("numtype ==>", type (num)) if sel == 2 : num10 = int(num,2) if sel == 8 : num10 = int(num,8) if sel == 10 : num10 = int(num,10) if sel == 16 : num10 = int(str(num),16) print("16진수 ===> %s" % hex(num10)) print("10진수 ===> %d" % num10) print("8진수 ===> %s" % oct(num10)) print("2진수 ===> %s" % bin(num10))
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력