我想从标准输入如下五个数字如下:
3,4,5,1,8
成单独的变量a,b,C,d&E。
如何在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个整数。 然后?
使用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
功能不会做你希望它是什么。 它实际上是从标准的Python代码评估输入。
在你的情况下,它证明什么,那么你必须是一个数字的元组中的a
,所有的分析和准备工作,但一般你真的不希望使用这种奇怪的副作用。 其它输入可能导致发生的任何一些事情。
顺便说一句,在Python 3,他们解决了这个问题,现在的input
功能做你所期望。
两两件事:
- 你并不需要
import string
做简单的字符串操作。 - 就像MJV 说 ,分裂一个元组或列表分成几个变量,你可以“解压”吧。 这会不会是可行的,如果你不知道该列表将持续多久,但。
开箱:
>>> l = (1,2,3,4,5)
>>> a,b,c,d,e = l
>>> e
5
在Python的2.X只 (*)
后一个输入=()
一个与5个元素的元组解析容易!
分配这5个值的快速方法是
a, b, c, d, e = a
(*)与Python 3.0版本? 或肯定3.1,输入()功能更像2.X的的raw_input()方法,该方法使得它不太混乱。 (谢谢mshsayem指出这一点!)
如果打印出来(包含你输入变量),你会发现,一个已经包含一个元组。 你不必拆分内容。
>>>一个输入=()
3,4,5,1,8
>>>打印(a)中
(3,4,5,1,8)
>>>类型(a)中
<类型“元组”>
>>>一个[0]
3
>>> LEN(a)中
五
in = eval(input())
a, b, c, d, e = in