더북(TheBook)

python3 addints.py 4 명령을 실행하면 파이썬 프로그램이 실행된다. 명령 줄 인수를 입력받고 total0으로 초기화한 후, for 루프에 들어가 stdio.readInt()를 호출해 사용자가 정수를 입력할 때까지 기다린다. 첫 번째 값을 144로 하고자 했을 때, 키보드로 1을 입력하고, 4를 입력하고, 4를 입력할 때까지 아무런 일도 일어나지 않는다. stdio는 어떤 숫자를 사용자가 입력하려는지 알지 못하기 때문이다. 그러나 숫자의 입력이 완료되었음을 알려주기 위해 [Return] 키를 누른 후에는 stdio.readInt()가 값 144를 반환하고 total에 더한 후 또다시 stdio.readInt()를 호출한다. 그러고 나서 2, 3, 3을 입력할 때까지 아무런 일도 생기지 않다가 [Return]을 누른 후에 strdio.readInt()233을 반환하고, 이 값을 다시 total에 더한다. 이렇게 네 개의 숫자를 입력한 후 프로그램은 더 이상 입력받지 않고, 우리가 원하는 대로 합계를 출력한다. 그림 1.5.3에서는 사용자가 입력하는 부분을 볼드체로 표기해 프로그램이 출력하는 내용과 구분했다.

입력 서식 stdio.readInt()는 정수를 기대한다. 그런데 abc, 12.2True를 입력하면 파이썬은 실행 시 ValueError 예외를 발생시킨다. 각 데이터 타입의 서식은 파이썬에서 리터럴을 지정하기 위해 사용한 서식과 똑같다. stdio는 일련의 공백 문자들을 그저 하나의 공백으로 간주해 숫자를 구분해낸다. 숫자 사이에 몇 개의 공백 문자가 들어있든지, 숫자 하나를 한 줄에 넣든지, [Tab] 키를 사용하거나 여러 줄을 바꿔서 구분하든지 상관없다(다만 터미널 애플리케이션은 표준 입력을 한 번에 한 줄씩 처리하므로, [Return] 키를 누르면 그 줄에 있는 숫자를 모두 표준 입력 스트림으로 보낸다). 입력 스트림에서 여러 데이터 타입의 숫자를 한꺼번에 입력할 수도 있지만, 프로그램이 특정한 데이터 타입을 기대하고 있다면 입력 스트림에 그 데이터 타입의 값이 있어야 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.