2012-05-03 60 views
3

輸入:商店多行輸入一個字符串(Python)的

359716482 
867345912 
413928675 
398574126 
546281739 
172639548 
984163257 
621857394 
735492861 

我的代碼:

print("Enter the array:\n") 
userInput = input().splitlines() 
print(userInput) 

我這裏的問題是,userInput只需要在第一線的價值,但它不't 似乎取第一行後的值?

回答

2

每個input()只接受一行。解決此策略:

  • 可以反覆調用input()在一個循環,直到它收到一個循環,直到用戶執行CTRL-d在類UNIX操作系統,在一個空行
  • 可以反覆調用input()這一點引發EOFError將提高可以捕獲
  • 閱讀從文本文件或其他更合適的源中的數據比標準輸入
+1

和開關的raw_input到(),而不是 – jdi

+5

他使用Python 3所以'input' ** **是' raw_input'。至少我認爲他是... – jamylak

+1

使用'print'作爲函數,所以可能是Py3。 – PaulMcG

12

您可以使用文件對象的readlines()方法:

import sys 
userInput = sys.stdin.readlines() 
+3

不錯。記錄:這將需要做ctrl-D來結束輸入。 – ninjagecko

+3

請記住,如果OP正在使用它,這將不適用於Python IDLE。 – jamylak

5

您可以使用生成器輕鬆創建一個。這是一個這樣的實現。注意:您可以按空白退貨或任何鍵盤中斷打出來的inputloop

>>> def multi_input(): 
    try: 
     while True: 
      data=raw_input() 
      if not data: break 
      yield data 
    except KeyboardInterrupt: 
     return 


>>> userInput = list(multi_input()) 
359716482 
867345912 
413928675 
398574126 

>>> userInput 
['359716482', '867345912', '413928675', '398574126'] 
>>> 
-1
lines = [] 
while True: 
s =input("Enter the string or press ENTER for Output: ") 
if s: 
    lines.append(s) 
else: 
    break; 

print("OUTPUT: ") 
for i in lines: 
print (i) 

Input: 
359716482 
867345912 
413928675 
398574126 
546281739 
172639548 
984163257 
621857394 
735492861 

Output: 
359716482 
867345912 
413928675 
398574126 
546281739 
172639548 
984163257 
621857394 
735492861 
+0

歡迎來到Stack Overflow!感謝您的代碼片段,它可能會提供一些即時的幫助。通過展示*爲什麼*這是一個很好的解決方案,對未來的讀者會有更好的解決方案,這將爲它的教育價值提供一個合適的解釋[//大大提高](// meta.stackexchange.com/q/114762)但不完全相同的問題。請編輯您的答案以添加解釋,並指出適用的限制和假設。 –

+0

所有的輸入可以通過粘貼直接得到顯示的輸出。 –