저는 파이썬과 다른 모든 프로그래밍 언어에 익숙하지 않아 코드에 문제가 있습니다. 나는 당신이 (무엇에 진수 번호) 일부 변환 옵션 중 하나를 선택할 수있는 메뉴를 만들려고 노력 해요 :내부에서 메뉴 함수 호출하기
base = ['Binary', 'Octal', 'Hexadecimal']
def menu():
choice = int(input('Choose a conversion method: 1-Binary, 2-Octal,3-HexaDecimal. Your choice: '))
if choice > 3 or choice < 1:
print('Invalid choice, choose between 1 and 3.')
menu()
else:
print('something...')
return choice
x = menu()
num = int(input('Decimal number to be converted to {}: '.format(base[x-1])))
#This isn't going to be used on my code, its only here so i can see what
#Python is getting from input
print('Verifying choice value: {}'.format(x))
print('Verifying num value: {}'.format(num))
def binary(num):
list = []
var = ''
while num >= 1:
divint = num // 2
list.append(num % 2)
num = divint
list.reverse()
size = len(list)
for c in range(0, size):
var += str(list[c])
intBin = int(var)
return intBin
def opt(choice):
if choice == 1:
conv = binario(num)
elif choice == 2:
conv = octal(num)
elif choice == 3:
conv = hexa(num)
else:
print('Invalid Option, try again!')
menu()
return conv
print('\nYou have chosen {}: {}'.format(base[x-1], binary(num)))
문제이고, I는 1과 3 사이에 뭔가를 선택하는 경우, 프로그램이 잘 실행하고 바이너리가 계획된. 만약 내가> 3 또는 < 1을 선택했다면 의도 한대로 메시지를 반환하고 menu()를 다시 호출하지만 새로운 입력이 1과 3 사이라면 오류가 발생합니다. '선택'변수가 첫 번째 시도에서 값을 얻고 두 번째 시도에서 값을 얻는 것처럼 보입니다. 변수를 '재설정'하지 않고 새 값을 새 입력에서 가져 오지 않습니다. 나는 파이썬에 완전히 익숙하지 않다. 어떤 도움이라도 대단히 감사 할 것이다.
if choice > 3 or choice < 1:
print('Invalid choice, choose between 1 and 3.')
menu()
당신은 자체 내부의 menu()
함수를 호출하지만, 당신이 그것을 반환 값을 저장하지 않습니다에서
'menu()'를'return menu()'로 변경하면 재귀가 어떻게 작동하는지 더 자세히 살펴보십시오. – jordanm