私はPythonと他のすべてのプログラミング言語が新しく、私のコードに問題があります。私はあなたには、いくつかの変換オプション(何に小数)の間で選択することができ、メニューを作成しようとしている:内部でメニュー関数を呼び出す
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)))
問題は、私は1と3の間に何かを選択した場合、プログラムが正常に動作し、バイナリがあります計算される。私が何か> 3か< 1を選択した場合、意図したとおりにメッセージが返され、menu()が再び呼び出されますが、新しい入力が1から3の間であればエラーになります。 「選択肢」の変数は、最初の試行ではなく2番目の試行からその値を得ているようです。変数を「リセット」しておらず、新しい入力から新しい値を取得しません。私はPythonに全く新しいです、どんな助けも大いに評価されるでしょう。
'menu()'を 'return menu()'に変更すると、再帰がどのように機能するかを詳しく見ることができます。 – jordanm