簡體   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