sunder97   3년 전

분명 입력은 숫자랑 영어만 한정되어 있고,.. if else라서 다 걸려서 들어와서 값도 괜찮을텐데 뭐가 문제일까요.. ㅠㅠ

ghghgh777   3년 전

런타임 에러는 line 2를 input = sys.stdin.readline 으로 고치면 될 것 같습니다.

그리고 input()마다 strip을 해주셔야 될 것 같네요.

sunder97   3년 전

해결했습니다! 감사해요.. 제가 독학이라 따로 배운게 없어서 그러는데 위 코드와 ghghgh777님께서 말씀하신대로 수정한 코드의 차이가 뭘까요..? 온라인 IDE에서는 돌아가더라구요 ㅠㅠ

ghghgh777   3년 전

돌아가지 않습니다. https://ideone.com/Gi4h3s

input = sys.stdin.readline() 을 사용하면 sys.stdin.readline()을 호출한 결과값이 input에 담기게 되니 결국 input에는 입력의 첫 줄이 들어가게 됩니다.

이를 input = sys.stdin.readline 으로 고치면 sys.stdin.readline 자체가 input에 담기게 되고 이후 input() 으로 input을 호출하면 sys.stdin.readline을 호출한 것과 동일하게 되겠고요.

input()마다 strip을 하지 않는 경우 각 줄 끝에 개행문자까지 입력받는 문제가 있습니다. 그러다 보니 리스트에 'Bulbasaur' 대신 'Bulbasaur\n'이 저장되는 식입니다.

똑같이 strip 없이 처리하니 질문에 해당하는 M개의 줄도 '25\n', 'Raichu\n', ... 로 입력이 들어올 것이고, 여기까지는 문제가 없지만 마지막 줄 'Kakuna'는 개행문자가 없이 입력받게 되고, n_list에는 'Kakuna\n'는 있지만 'Kakuna'는 없으므로 오류가 발생하게 됩니다.

sunder97   3년 전

감사합니다!!

repl.it에서 쓰지말고 ideone 사용 해야겠군요..

댓글을 작성하려면 로그인해야 합니다.