Python - 检查多个字符串条目是否包含无效字符

时间:2011-03-26 01:38:30

标签: python

使用Python v2.x,我想让用户询问3个变量,如下所示:

 def Main():

    chars = set('0123456789')

    while True:
       Class_A_Input = raw_input('Enter Class A tickets sold: ')
       Class_B_Input = raw_input('Enter Class B tickets sold: ')
       Class_C_Input = raw_input('Enter Class C tickets sold: ')

        if any((c in chars) for c in Class_A_Input):
            break
        else:
            print 'Wrong'

    total_profit((int(Class_A_Input)), (int(Class_B_Input)), (int(Class_C_Input)))

如何检查用户输入是否为有效输入。 IE:我只想输入数字数据。在使用'chars = set('0123456789')和'WHILE'函数之前,我已经完成了一次,但似乎无法让它适用于多个输入。

感谢您的帮助。

编辑:我已经把代码放进去了。我将'int'移动到'total_profit'变量。如何检查所有输入?

3 个答案:

答案 0 :(得分:2)

def getInt(msg):
    while True:
        try:
            return int(raw_input(msg))
        except ValueError:
            pass

def total_profit(a, b, c):
    return 35.0*a + 25.0*b + 10.0*c

def main():
    class_a = getInt('Enter Class A tickets sold: ')
    class_b = getInt('Enter Class B tickets sold: ')
    class_c = getInt('Enter Class C tickets sold: ')

    print("Total profit is ${0:0.2f}.".format(total_profit(class_a, class_b, class_c)))

if __name__=="__main__":
    main()

答案 1 :(得分:1)

Python有很多漂亮的功能。这是我认为可以帮助你的一个:

> 'FooBar'.isdigit()
> False

> '195824'.isdigit()
> True

答案 2 :(得分:1)

对非有效整数的内容调用int会引发ValueError异常。您可以抓住这一点 - 每次调用int时,如果您想要识别哪个输入无效,或者在所有三个输入中使用单个try

或者你想要的其他限制超出了那个范围吗?