2013-01-13 43 views
-2

如何将多个变量分配给一个GUI输入框?事情是这样的:Q1,Q2,Q3 =输入()有没有办法为一个输入框分配多个变量 - Python

这是不是代码会怎么走,但是这只是我希望它像:

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是错误的。 (一个是错误的,B是正确的,C是错误的)

+0

为什么你需要str()围绕输入? –

+0

当我在输入框中输入一个命令时,它将其读取为字符串而不是数字。 –

+0

@JakeLeduc我不确定你的意思,但我很确定'str'不会做任何事情,如果这是你实际使用的代码。 –

回答

2

input只能返回一个字符串,但您可以处理它的飞行:

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

这可能会导致ValueError如果“数单词“不同于3,因此您可能需要使用try - except来处理它。

try: 
    a, b, c = input('Type in a command').split() 
except ValueError: 
    print('Invalid input. Please enter a, b and c') 
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") 
+0

什么是downvote? – asheeshr

+0

我也有一个 - 有时这些事情发生... – mgilson

+0

我真的不明白没有支持评论downvote背后的逻辑。 – Abhijit

0

如果要使用不同类型的,你很可能ast.literal_eval

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

这工作,因为ast演算值为字符串成包含文字的元组。然后在左侧解包。当然,为了这个工作,元素必须用逗号分隔。

相关问题