我的代码应该为用户打印菜单,让他们选择一个选项,并根据他们选择的选项,输入具有特定基数的数字。我需要一个功能来收集他们的选项,一个功能,一旦他们输入一个选择就收集他们的号码,以及一个功能来验证他们的号码在正确的基础上。我一直收到错误,因为变量" userChoice"我在我的一个函数中声明的是" undefined"当我尝试在主要使用它。我该如何解决这个问题?
def printmenu(userChoice):
flag = True
while(flag == True):
print("Enter 2 for base 2")
print("Enter 8 for base 8")
print("Enter 16 for base 16")
userChoice = input("Enter 0 to stop: ")
if userChoice not in ["2", "8", "16", "0"]:
print("Invalid choice\n")
flag = True
else:
flag = False
return(userChoice)
def askUserValue():
flag2 = False
while(flag == True):
base2 = input("Enter a base 2 number: ")
flag2 = validateInput(base2)
newBase2 = base2
return (newBase2)
def isbase2(base2):
try:
base2 = int(input("Enter a base 2 number" , 2))
flag1 = False
return (True)
except ValueError:
flag1 = True
return (False)
else:
flag1 = True
return (False)
def main():
if (printmenu(userChoice) == "2"):
askUserValue()
main()
答案 0 :(得分:2)
删除printmenu()方法中的参数,如下所示:
def printmenu():
flag = True
while(flag == True):
print("Enter 2 for base 2")
print("Enter 8 for base 8")
print("Enter 16 for base 16")
userChoice = input("Enter 0 to stop: ")
if userChoice not in ["2", "8", "16", "0"]:
print("Invalid choice\n")
flag = True
else:
flag = False
return(userChoice)
然后你可以在main中调用它:
if (printmenu() == "2"):
askUserValue()
答案 1 :(得分:0)
问题与python如何使用变量有关,变量与其他语言中的对象不同。 python中的变量只是引用,因此在函数中声明它们实际上并没有转移到主范围。我如何解决这个问题是我在main中声明变量,并将其设置为我正在运行的函数。
userChoice = printmenu()
答案 2 :(得分:0)
使用可变长度参数:
def printmenu(*args):
flag = True
while(flag == True):
print("Enter 2 for base 2")
print("Enter 8 for base 8")
print("Enter 16 for base 16")
userChoice = input("Enter 0 to stop: ")
if userChoice not in ["2", "8", "16", "0"]:
print("Invalid choice\n")
flag = True
else:
flag = False
return(userChoice)
并使用这样的返回结果:
def main():
if printmenu() == "2":
askUserValue()
main()
第二个选项:
只需从函数中删除参数和参数,如下所示:
def printmenu():
flag = True
while(flag == True):
print("Enter 2 for base 2")
print("Enter 8 for base 8")
print("Enter 16 for base 16")
userChoice = input("Enter 0 to stop: ")
if userChoice not in ["2", "8", "16", "0"]:
print("Invalid choice\n")
flag = True
else:
flag = False
return(userChoice)
并使用如下函数的返回值:
def main():
if printmenu() == "2":
askUserValue()
main()