我想从标准输入读取五个数字输入如下:
3,4,5,1,8
分成变量a,b,c,d&即
我如何在python中执行此操作?
我试过了:
import string
a=input()
b=a.split(', ')
两个整数,但它不起作用。我明白了:
Traceback (most recent call last):
File "C:\Users\Desktop\comb.py", line 3, in <module>
b=a.split(', ')
AttributeError: 'tuple' object has no attribute 'split'
怎么做?并假设我没有固定但可变数n个整数。然后?
答案 0 :(得分:15)
使用raw_input()
代替input()
。
# Python 2.5.4
>>> a = raw_input()
3, 4, 5
>>> a
'3, 4, 5'
>>> b = a.split(', ')
>>> b
['3', '4', '5']
>>> [s.strip() for s in raw_input().split(",")] # one liner
3, 4, 5
['3', '4', '5']
误导性名称input
功能并不符合您的预期。它实际上将stdin的输入计算为python代码。
在你的情况下,你得到的是a
中的数字元组,所有解析并准备好工作,但通常你并不真的想要使用这种奇怪的副作用。其他输入可能导致任何数量的事情发生。
顺便说一句,在Python 3中他们修复了这个问题,现在input
函数完成了你所期望的工作。
还有两件事:
import string
进行简单的字符串操作。 启封:
>>> l = (1,2,3,4,5)
>>> a,b,c,d,e = l
>>> e
5
答案 1 :(得分:2)
仅限Python 2.x (*)
<=> a = input()之后a是一个元组,其中5个值很容易解析!
分配这5个值的快捷方法是
a, b, c, d, e = a
(*)与Python 3.0版?或者肯定3.1,input()的工作方式更像2.x的raw_input()方法,这样可以减少混淆。 (谢谢mshsayem指出这一点!)
答案 2 :(得分:0)
如果你打印出一个(包含你的输入的变量),你会发现,a已经包含一个元组。您不必拆分内容。
&GT;&GT;&GT; a =输入()
3,4,5,1,8 &GT;&GT;&GT;打印的(a)
(3,4,5,1,8)
&GT;&GT;&GT;类型(a)中
&lt; type'tuple'&gt;
&GT;&GT;&GT;一个[0]
3
&GT;&GT;&GT; LEN(a)中
5
答案 3 :(得分:-2)
in = eval(input())
a, b, c, d, e = in