繁体   English   中英

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

[英]How to read formatted input in python?

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

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功能并不符合您的预期。 它实际上将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

仅在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指出这一点!)

如果你打印出一个(包含你的输入的变量),你会发现,a已经包含一个元组。 您不必拆分内容。

>>> a =输入()
3,4,5,1,8
>>>打印(一)
(3,4,5,1,8)
>>>类型(a)
<type'tuple'>
>>> a [0]
3
>>> len(a)

in = eval(input())

a, b, c, d, e = in

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM