2011-08-09 85 views
2

是否可以输入2个数字intfloat用逗号分隔在单行中?输入2个变量,用逗号分隔在单行中

说程序运行后会要求用户Enter a range:然后用户会输入2,3。所以变量范围是[2,3]。据我所知range_choice.split()是唯一的方法。

+1

是啊,分裂是做它的方式。 –

+0

'split'不是唯一的方式,但它是最快最简单的。有一件事你可能不得不记住的情况是,如果用户没有输入任何内容会发生什么情况,仅输入1个值,有/无逗号等等。 –

+0

不要调用变量'input',这是一个内置功能。 – agf

回答

2
num1,num2 = map(float, raw_input('Enter a range: ').split(',')) 

另外,如果你想允许在第二个值逗号,使用partition代替split

s1,_,s2 = raw_input('Enter a range: ').partition(',') 

在这种情况下,你必须通过自己的两个字符串转换数字。

+0

.split比这更好,这不是一个更好的选择。 – utdemir

+0

@utdemir更新了更多关于何时使用哪些细节。 – phihag

+0

您需要能够清理输入,以便立即分配值会导致错误输入异常。 –

0

NUM1,NUM2的raw_input =( '输入范围: ').split('')

0
 x,y = input("Enter range: ") 

如果你希望他们为数字最好不要使用的raw_input。

+0

不!不要无条件评估任意输入。 'input'很糟糕,这就是为什么'raw_input'在Python 2中将其替换为'input'。 – agf

+0

@Josh'input'是一个不必要的安全漏洞(因此在Python 3中会消失),因为您允许用户执行任意程序。此外,这并不保证'x'和'y'是数字(例如,输入“ab”') – phihag

0

这是我的理解是ast.literal_eval是安全的:

>>> x, y = ast.literal_eval(raw_input('Enter a range: ')) 
Enter a range: 5, 6 
>>> x, y 
(5, 6) 
+0

或['input'](http://docs.python.org/py3k/library /functions.html#input)而不是Python 3的'raw_input'。 – senderle