파이썬3 input 여러 줄 입력

조회수 4047회
print("은행 거래 내역을 입력하세요(ex, D 200 or W 100) Ctrl-D to save it.")
contents = []
while True:
    try:
        line = input()
    except EOFError:
        break
    contents.append(line)

위와 같은 코드에서 D 200 엔터, W 100엔터 후에 Ctrl-D를 누르면 정상적으로 list에 append가 되는데
W 100 입력 후 엔터를 하지 않고 ctrl+D하게 되면 list에 정상적으로 append가 되지 않습니다.
혹시 방법이 있을까요?

  • 혹시 가능하다면 ctrl+d라는 '입력 이벤트'가 일어났을 때에 대한 통제를 넣으면 안되나요? js라면 그렇게 할 것 같습니다만... 엽토군 2018.7.19 15:50
  • 제가 지식이 짧아.. 조금만 더 자세히 풀어서 말씀해주실 수 있을까요? Kwansu Kim 2018.7.19 17:09

1 답변

  • 입력하다가 Ctrl+D(EOF)를 누르면except에서 break로 while 문을 빠져나와서 append(line) 문장이 실행이 되지 않네요.
    append를 finally:에 넣어주거나 해야할 것 같습니다.

    print("은행 거래 내역을 입력하세요(ex, D 200 or W 100) Ctrl-D to save it.")
    contents = []
    while True:
        try:
            line = input() # W 100 입력하고 엔터없이 Ctrl+D 하면
        except EOFError: # 여기서 캐치해서
            break # while문을 빠져나가서 밑에 문장이 실행이 안됩니다.
        contents.append(line)
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)