更新函数中的变量?

时间:2014-03-18 04:22:25

标签: validation variables python-3.x user-input

我正在自学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)

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解你,但如果它有效,你已经返回了user_input,因此

rating_A = input('Please enter a value for A: ')
rating_A = check_input(rating_A)

将最终的返回值分配给您的变量并设置。

否则,我很抱歉没有理解你的请求。