如何读取蟒蛇格式化输入?(How to read formatted input in python

2019-07-17 11:31发布

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

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个整数。 然后?

Answer 1:

使用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功能做你所期望。

两两件事:

  1. 你并不需要import string做简单的字符串操作。
  2. 就像MJV 说 ,分裂一个元组或列表分成几个变量,你可以“解压”吧。 这会不会是可行的,如果你不知道该列表将持续多久,但。

开箱:

>>> l = (1,2,3,4,5)
>>> a,b,c,d,e = l
>>> e
5


Answer 2:

在Python的2.X只 (*)

后一个输入=()

一个与5个元素的元组解析容易!

分配这5个值的快速方法是

a, b, c, d, e = a

(*)与Python 3.0版本? 或肯定3.1,输入()功能更像2.X的的raw_input()方法,该方法使得它不太混乱。 (谢谢mshsayem指出这一点!)



Answer 3:

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

>>>一个输入=()
3,4,5,1,8
>>>打印(a)中
(3,4,5,1,8)
>>>类型(a)中
<类型“元组”>
>>>一个[0]
3
>>> LEN(a)中



Answer 4:

in = eval(input())

a, b, c, d, e = in


文章来源: How to read formatted input in python?
标签: python input