파이썬 기초 질문 ) 진수변환 프로그램 ) 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))
    
    
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)