有没有办法为一个输入框分配多个变量 - Python

时间:2013-01-13 14:53:51

标签: python input python-3.3

如何将多个变量分配给一个GUI输入框?像这样:q1,q2,q3 = input()

这不是代码的方式,但这只是我希望它的样子:

 a, b, c = str(input("Type in a command"))

但不是这样的:

abc = str(input("Type in a command"))

if abc == str("a"):
    print ("a is right")
else:
    print ("a is wrong")

if abc == str("b"):
    print ("b is right")
else:
    print ("b is wrong")

if abc == str("c"):
    print ("c is right")
else:
    print ("c is wrong")

如果我这样做,我会误解其中一个,它会告诉我一个是正确的& 2是错的。 (a是错的,b是对的,c是错的)

3 个答案:

答案 0 :(得分:2)

input只能返回一个字符串,但您可以动态处理它:

a, b, c = input('Type in a command').split()

如果输入中的“字词数”与3不同,则可能会产生ValueError,因此您可能需要使用try - except来处理它。

try:
    a, b, c = input('Type in a command').split()
except ValueError:
    print('Invalid input. Please enter a, b and c')

答案 1 :(得分:1)

Input只返回一个字符串。您可以存储输入,然后根据需要进行处理。采用多变量输入的简单而安全的方法是:

s = input().split()

在这里,s为您提供了空白分隔输入的列表。这可以采用任意数量的选项。

然后,您可以单独处理每个

for i in s :
    if i in ('a','b','c') : 
        print(i, " is right")
    else :
        print(i, " is wrong")

答案 2 :(得分:0)

如果您想使用不同类型,可以使用ast.literal_eval

a,b,c = ast.literal_eval("3,4,5")
a,b,c = ast.literal_eval("3,4.5,'foobar'")

这是有效的,因为ast将字符串评估为包含文字的元组。然后在左侧打开包装。当然,要使其工作,元素必须用逗号分隔。