Python 3.x 你能创建一个改变的输入吗?
我正在创建一个类似测验的程序,并决定将“while True”循环函数(如下所示)定义为一个函数。为此,我需要更改输入。然而,无论我重新设置问题的格式多少次,我似乎都无法做到这一点。代码如下:Python 3.x 你能创建一个改变的输入吗?,python-3.x,input,Python 3.x,Input,我正在创建一个类似测验的程序,并决定将“while True”循环函数(如下所示)定义为一个函数。为此,我需要更改输入。然而,无论我重新设置问题的格式多少次,我似乎都无法做到这一点。代码如下: def whiletrueloop(): while True: choicenumber=input(choice) if choicenumber.lower() not in (options): print(repeatsentenc
def whiletrueloop():
while True:
choicenumber=input(choice)
if choicenumber.lower() not in (options):
print(repeatsentence)
else:
break
choice=("What is bigger, an elephant or a mouse?")
choicenumber=("choice1")
options=('elephant','mouse')
repeatsentence=("That isn't an answer!")
whiletrueloop()
if choicenumber=="elephant":
print("Correct!")
elif choicenumber=="mouse":
print("Wrong!")
我认为代码的主要问题与choicenumber变量的范围有关。将其设置为带有行的全局变量
choicenumber = ("choice1")
在函数中,它在本地分配给输入值,但在代码末尾的if-else决策中使用的是全局范围变量。您可以通过在代码末尾插入此选项来测试这一点:
elif choicenumber == "choice1":
print("Global!")
您将始终显示“全局”,因为函数中的局部值将被忽略,而不是全局值
有几种方法可以解决这个问题。一种是将choicenumber变量声明为函数中的全局变量:
while True:
global choicenumber
choicenumber=input(choice)
然而,使用全局变量被认为是一种不好的做法,其原因可以查阅
另一种方法是使用函数返回choicenumber的值以响应函数调用:
def whiletrueloop():
while True:
choicenumber=input(choice)
if choicenumber.lower() not in (options):
print(repeatsentence)
else:
return choicenumber
choice=("What is bigger, an elephant or a mouse?")
options=('elephant','mouse')
repeatsentence=("That isn't an answer!")
choicenumber = whiletrueloop()
if choicenumber=="elephant":
print("Correct!")
elif choicenumber=="mouse":
print("Wrong!")