2012-05-03 4 views
3

입력 :스토어 멀티 라인 입력 (파이썬)

359716482 
867345912 
413928675 
398574126 
546281739 
172639548 
984163257 
621857394 
735492861 

내 코드 :

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

내 문제는 여기 userInput은 첫 번째 줄의 값이 필요하지만 그것은 아무튼,이다 ' 은 첫 번째 줄 뒤에 값을 가져 오는 것 같습니다.

답변

2

input()은 한 줄만 허용합니다. 이 주위 전략 :

  • 는 사용자가에서 유닉스 계열 OS에서 Ctrl-D를 수행 할 때까지 루프에서
  • 당신은 반복적으로 input() 호출 할 수있는 빈 줄을 수신 할 때까지 반복 루프에서 input()를 호출 할 수 있습니다 당신이
+1

벗어나 어떤 키보드 인터럽트를 눌러 그래서'input'은 **입니다 대신 – jdi

+5

그는 파이썬 3을 사용) (raw_input을 전환 할 수 있습니다 참고 **' raw_input'입니다. 적어도 나는 그가 ...라고 생각한다. – jamylak

+1

'print'를 함수로 사용하면 아마도 Py3이 될 것이다. – PaulMcG

12

을 stdin을보다 텍스트 파일 또는 다른 더 적절한 소스로부터 데이터를 읽어 잡을 수는 EOFError가 제기 될 점 당신은 파일 객체의 readlines() 방법을 사용할 수 있습니다 :

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

니스. 레코드의 경우 : 입력을 종료하려면 Ctrl-D를 입력해야합니다. – ninjagecko

+3

OP가 이것을 사용하고 있다면 IDLE의 python에서는 작동하지 않습니다. – 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

스택 오버플로에 오신 것을 환영합니다! 이 코드 스 니펫을 이용해 주셔서 감사 드리며 도움이 될 것입니다. 이 설명이 왜 문제에 대한 좋은 해결책인지를 보여줌으로써 적절한 설명 ([meta.stackexchange.com/q/114762])은 교육적 가치를 크게 향상시킬 것이며, 비슷한 미래의 독자들에게 더 유용하게 활용할 수 있습니다. 그러나 동일하지는 않습니다. 설명을 추가하려면 답을 편집하고 어떤 제한 및 가정이 적용되는지 표시하십시오. –

+0

모든 입력은 직접 붙여 넣어 출력을 얻을 수 있습니다. –