일반인을 위한 파이썬 지침서/10까지 세어보기
While 회돌이
[+/-]우리의 첫번째 제어 구조를 제시하련다. 평상적으로 컴퓨터는 첫 번째 라인에서 시작하여 아래로 내려간다. 제어 구조는 어떤 서술문이 실행되면 서술문이 실행되거나 결정되는 순서를 바꾼다. 여기에 while 제어 구조를 사용하는 프로그램을 위한 소스가 있다.
a = 0 while a < 10: a = a + 1 print a
그리고 여기에 정말로 흥미진진한 출력이 있다.
1 2 3 4 5 6 7 8 9 10
(여러분의 컴퓨터를 5달러짜리 계산기로 바꾸어도 더 나쁠것 같지 않다고 여러분은 생각하겠지?)자 이 프로그램은 무엇을 하는가? 먼저 a = 0이라는 라인을 보고서 0을 만든다. 그리고 while a < 10:라는 라인을 보고서 컴퓨터는 a < 10인가를 점검한다. a는 0이라는 서술문을 컴퓨터가 처음으로 보았으므로 그것은 10 이하이다. 다른 말로 하면 a 가 10 이하인 동안에만 컴퓨터는 들여쓰기된 서술문들을 실행할 것이다.
여기에 while을 사용하는 또 다른 예제가 있다.
a = 1 s = 0 print 'Enter Numbers to add to the sum.' print 'Enter 0 to quit.' while a != 0 : print 'Current Sum:',s a = input('Number? ') s = s + a print 'Total Sum =',s
처음으로 내가 이 프로그램을 실행했으므로 파이썬은 다음과 같은 것을 내 뱉는다.
File "sum.py", line 3 while a != 0 ^ SyntaxError: invalid syntax
나는 while문의 뒤에 :를 놓는것을 깜빡했다. 에러 메시지는 그 문제에 대해 불평을 하는 것이며 파이썬이 생각하기에 문제가 어디인지를 윗꺽쇠^"로 지적하는 것이다. 이 문제를 해결한 후에 내가 프로그램을 실행한 바를 여기에 보이면
Enter Numbers to add to the sum. Enter 0 to quit. Current Sum: 0 Number? 200 Current Sum: 200 Number? -15.25 Current Sum: 184.75 Number? -151.85 Current Sum: 32.9 Number? 10.00 Current Sum: 42.9 Number? 0 Total Sum = 42.9
표현식 "print 'Total Sum =',s "이 마지막에 한번 만 실행됨을 주목하라. while 서술문은 탭쓰기된 ( 들여쓰기된) 라인에만 영향을 미친다. != 은 같지 않다는 것을 의미한다 그래서 while a != 0 : 가 뜻하는 것은 a 가 0이 될 때까지 이후의 탭쓰기된 서술문들을 실행하라는 의미이다.
이제 우리는 while 루프를 다룬다, 영원히 실행되는 프로그램을 갖는 것은 가능하다. 이것을 하는 쉬운 방법은 프로그램을 다음과 같이 작성하는 것이다:
while 1 == 1: print "Help, I'm stuck in a loop."
이 프로그램은 우주가 열로 멸망하거나 여러분이 멈출때까지 "Help, I'm stuck in a loop."을 출력할 것이다. 여러분이 멈추는 방법은 Control (또는 Ctrl) 키와 `c' (문자)를 동시에 누르는 것이다. 이것으로 그 프로그램은 죽을 것이다. (주의: 때로는 여러분은 Control C 를 누른후에 엔터를 쳐야만 할 것이다.)
예제
[+/-]# Fibonnaci.py # This program calulates the fibonnaci sequence a = 0 b = 1 count = 0 max_count = 20 while count < max_count: count = count + 1 #we need to keep track of a since we change it old_a = a a = b b = old_a + b #Notice that the , at the end of a print statement keeps it # from switching to a new line print old_a, print
출력
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
# Password.py # Waits until a password has been entered. Use control-C to break out with out # the password password = "foobar" #note that != means not equal while password != "unicorn": password = raw_input("Password:") print "Welcome in"
샘플 실행
Password:auo Password:y22 Password:password Password:open seaseme Password:unicorn Welcome in