我正在自学python 3.x并且正在努力解决我在变量范围内遇到的问题。
在我的程序中,我要求用户输入,然后运行一个函数来检查它的值。如果值正确,我继续。否则,我希望允许用户更改其先前的输入并使用新值重新测试。我要找的值是字符串:'0','1','2',......'8','9'。
下面的代码不正确,但它是迄今为止我能够想到的最好的代码。我看到的问题是,虽然我可以在函数check_input()中更改变量user_input,但我不知道如何更改变量的范围。
例如,如果我运行程序并为rating_A键入“abc”,我将收到“太多字符”消息,并将被要求再次尝试。我现在输入'7',似乎都很花哨。但是当我稍后调用rating_A时,我会得到'abc',而不是所需的'7'。
我试图用全局变量技术解决这个问题。我的困难在于我希望检查大量的输入值,每个输入值都有自己的变量(rating_A,rating_B .... rating_Y,rating_Z)。我想有一个更优雅的方法来实现这个目标?
from string import digits
def check_input(user_input):
while True:
if len(user_input) != 1:
print (user_input, 'has too many characters!')
user_input = input('try again: ')
continue
elif user_input in digits:
print (user_input, 'is valid!')
user_input = int(user_input)
return user_input
break
else:
print (user_input, 'is not a valid input!')
user_input = input('try again: ')
continue
rating_A = input('Please enter a value for A: ')
check_input(rating_A)
print ()
rating_B = input('Please enter a value for B: ')
check_input(rating_B)
答案 0 :(得分:0)
我不确定我是否理解你,但如果它有效,你已经返回了user_input,因此
rating_A = input('Please enter a value for A: ')
rating_A = check_input(rating_A)
将最终的返回值分配给您的变量并设置。
否则,我很抱歉没有理解你的请求。