2017-09-26 30 views
3
getMin, getMax = int(input("Enter a range (min,max): ")); 

以上就是我想实现的代码,但它给了我一个错误说...Python 2.7版以来自用户的输入为两个独立的变量

int() argument must be a string or a number, not 'tuple' 

基本上,我试图进入.split(,)后输入语句,但我得到相同的错误。当用户输入1,10作为输入时,我想getMin = 1getMax = 10

+1

的可能的复制[如何从用户输入一个整数元组?](https://stackoverflow.com/questions/2233917/how-to-input-an-integer-tuple-from-user) –

回答

0

input功能(参见doc here)将试图评估所提供的输入。例如,如果你用你的名字喂它AMcCauley13它会寻找一个名为so的变量。 使用像1,10这样的值进行输入时,将在元组(1,10)中评估,这将打破需要字符串的int()函数。

与简单

getMin = int(raw_input("min range: ")) 
getMax = int(raw_input("max range: ")) 

或组合splitmapbalki suggested in the meanwhile

+0

谢谢!我最初是这样做的,但不知道我的教授是否会以这种方式接受它。 – AMcCauley13

+0

如何根本不使用'input',所以你不必像'__import __('os')。system('cat/etc/passwd')那样处理字符串。 – wim

+0

这是一个很好的观点。修复它以避免误导可能将其用于除分配之外的其他事物。 – Batsu

1

由于您使用的是Python 2,因此您应该使用raw_input而不是input。尝试是这样的:

from ast import literal_eval 

prompt = "Enter a range (min,max): " 
getMin = getMax = None 

while {type(getMin), type(getMax)} != {int}: 
    try: 
     getMin, getMax = literal_eval(raw_input(prompt)) 
    except (ValueError, TypeError, SyntaxError): 
     pass # ask again... 
+0

hello downvoter?有什么要说的? – wim

1

恕我直言,更简洁的方法假设你要输入要尽量逗号分隔

>>> prompt = "Enter a range (min,max): " 
>>> while True: 
...  try: 
...    getMin, getMax = map(int, raw_input(prompt).split(',')) 
...    break 
...  except (ValueError, TypeError): 
...    pass 
... 
Enter a range (min,max): skfj slfjd 
Enter a range (min,max): 232,23123,213 
Enter a range (min,max): 12, 432 
>>> getMin 
12 
>>> getMax 
432 
相关问题