rhkdals195   2년 전

계속 소스코보면서 고민하다가.. 글을 써봅니다.

고수분들의 조언을 구합니다..

jisung6723   2년 전

com을 리스트로 바꿔서 출력해보면 끝에 줄바꿈문자 \n이 포함된 상태입니다. 제거해줘야 할 것 같네요.

wjdghks728   2년 전

2번째 줄에서 input = stdin.readline을 추가하셨는데, input() 함수와 sys.stdin.readline() 함수의 차이로 인해 발생한 문제입니다.

input()함수는 입력을 할 때에 개행 문자(엔터, \n)를 삭제하여 반환하지만, 

sys.stdin.readline() 함수는 그렇지 않기 때문에 com에 개행 문자가 붙어서 입력된것입니다.

실제로 7번째 줄에서 com을 입력 받을 때 키보드로 push 1(엔터)를 입력하게 되면 com에는 push 3\n 이렇게 입력이 됩니다.

push 1(엔터)

push 2(엔터)

위처럼 입력을 하게 되면 arr에는 arr = ['1\n', '2\n'] 이렇게 값이 들어가게 됩니다.

33번째 줄에 print('arr: ', arr)을 추가하셔서 직접 확인해보시길 바랍니다.

그래서 pop, front 등등 다른 명령어를 입력해도 실제로 com에는 'pop\n' 이렇게 값이 들어가 있기 때문에

10번째 코드인 elif com == 'pop'이 성립이 되지 않는 것입니다. 'pop'하고 'pop\n'는 다르니까요.

따라서 com에 입력을 받을 때 개행문자를 제거해주는 함수인 .strip()을 추가하셔서

com = input().strip()을 하게되면 input()함수보다 빠른 속도로 입력을 받으실 수 있고 코드가 정상적으로 수행됩니다. 

아니면 2번째 줄을 제거하셔서 그냥 input() 함수를 사용하는 방법도 있습니다.

도움이 되었기를 바랍니다.

rhkdals195   2년 전

다들 정말 감사합니다. 많은 도움이 되었습니다.

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