2012-05-03 10 views
3

入力:ストアのマルチライン入力(パイソン)

359716482 
867345912 
413928675 
398574126 
546281739 
172639548 
984163257 
621857394 
735492861 

私のコード:

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

私の問題は、ここでuserInputは最初の行のみ値を取り込みますが、それはdoesnの、ということです' は最初の行の後に値を取るようですか?

答えて

2

input()は、1行のみを受け入れます。この周りの戦略:

  • それは空白行を受信するまで、あなたは、ユーザーがで、UNIX系OSのCtrl-Dをしてまで、あなたはループでinput()を繰り返し呼び出すことができます
  • ループでinput()を繰り返し呼び出すことができますあなたは
+1

から抜け出すために任意のキーボード割り込みを押すと、その 'input'が**である代わりに – jdi

+5

彼のpython 3を使用している)(raw_inputに切り替えることができますいずれかに注意してください**' raw_input'である。少なくとも私は彼がだと思います... – jamylak

+1

'print'を関数として使うので、おそらくPy3です。 – PaulMcG

12

を標準入力よりも、テキストファイルや他のより適切なソースからのデータを読むキャッチすることができ例外EOFErrorが発生されるポイントは、ファイル・オブジェクトのreadlines()メソッドを使用することができます。

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

ニース。レコードの場合:これは、入力を終了するためにCtrl-Dを実行する必要があります。 – ninjagecko

+3

OPがそれを使用している場合のために、これはpython IDLEで動作しません。 – jamylak

5

ジェネレータを使用して簡単に作成できます。そのような実装の1つがあります。あなたは空白の返品または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

ようこそスタックオーバーフロー!このコードスニペットをありがとうございます。すぐに役立つかもしれません。適切な説明は、なぜ*これが問題の良い解決策であるかを示すことによってその教育上の価値を大幅に改善し(// meta.stackexchange.com/q/114762)、将来の同様の、しかし、同一ではない質問。説明を追加するためにあなたの答えを[編集]し、どんな制限と前提が適用されるかを示してください。 –

+0

すべての入力を一度に貼り付けることで、出力を得ることができます。 –