如何在python中读取格式化的输入?

Laz*_*zer 7 python input

我想从标准输入读取五个数字输入如下:

3,4,5,1,8

分成变量a,b,c,d和e.

我怎么在python中这样做?

我试过这个:

import string
a=input()
b=a.split(', ')
Run Code Online (Sandbox Code Playgroud)

两个整数,但它不起作用.我明白了:

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'
Run Code Online (Sandbox Code Playgroud)

这该怎么做?并假设我没有固定但可变数n个整数.然后?

its*_*dok 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']
Run Code Online (Sandbox Code Playgroud)

误导性的名称input功能并没有达到你所期望的那样.它实际上将stdin的输入计算为python代码.

在你的情况下,事实证明你所拥有的是一个数字元组a,所有解析并准备工作,但通常你并不真的想要使用这种奇怪的副作用.其他输入可能导致任何数量的事情发生.

顺便说一句,在Python 3中,他们修复了这个问题,现在该input功能可以满足你的期望.

还有两件事:

  1. 您不需要进行import string简单的字符串操作.
  2. 就像mjv 所说的那样,要将元组或列表拆分成几个变量,你可以"解包"它.但是,如果您不知道列表的长度,这将是不可行的.

开箱:

>>> l = (1,2,3,4,5)
>>> a,b,c,d,e = l
>>> e
5
Run Code Online (Sandbox Code Playgroud)

  • 在 Python 3.1 中,input() 返回字符串。 (2认同)
  • 是的,但海报明显使用2.X. (2认同)