티스토리 뷰

5.1 루프(Loops)

- 루프명령어를 반복적으로 실행시키는 경우에 사용한다.

- 예를 들어, print("Progamming is fun!")이라는 명령어를 100번 실행하여야 할 떄, print 명령어를 100번 작성하는 것은 비효율적이다.

- 이런 경우 파이썬에서 제공하는 루프(Loop) 명령문을 이용한다면 100번 작성할 필요가 없다.

 

* 루프문 예시

count = 0

while count < 10:

print("Progamming is fun!")

count += 1

 

- 루프(loop) count < 10 참(true)인지 확인한다.

- 만약 이라면 루프문 바디(body)안에 있는 명령문들을 반복한다.

- 위 코드에서는 print함수와 count를 1씩 증가시키는 명령을 반복한다.

- 루프문은 count < 10이 거짓(false)가 될 떄까지 루프문 안의 명령문들을 반복한다.

루프문이 종료되고 나서다음 명령어들이 실행된다.

 

- 파이썬은 while for 형태의 루프문 형태를 제공한다.

- while조건기반루프(condition-controlled loop)이며, 참(true)/거짓(false)의 조건에 의해 통제된ㄷ.

- for횟수기반루프(count-controlled loop)이며, 사용자가 정한 횟수만큼 반복한다.

 

5.2 while 문(The while Loop)

-while문조건이 참인 동안 명령어를 실행시키는 명령어이다.

 

*while문 형식

while loop-cotinuation-condition:

#Loop body

statemaent(s)

 

- 각 반복문에는 부울 표현식(boolean expression)인 조건식(loop-cotinuation-condition)을 가지고 있으며, 이 조건식이 반복문 바디(body)안의 명령어들을 실행시킬지를 결정한다.

- 계산 결과가 참이라면 반복문 바디안의 명령어들을 반복실행시키고, 거짓이라면 반복문을 종결시킨다.

 

* 1부터 9까지 더하는 프로그램

sum = 0

i = 1

while i < 10:

sum += i

i += 1

print("sum is", sum)

 

위의 프로그램이 만약 아래와 같이 작성되어 있다면

 

sum = 0

i = 1

while i < 10:

sum += i

i += 1

print("sum is", sum)

 

- i += 1은 반복문 바디안에 있지 않기 때문에 반복문은 항상 참이 된다.

-그래서 위의 반복문은 결국 무한반복실행을 하게 된다.

 

* while문으로 문제정답을 맞출때까지 입력을 받는 프로그램

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import random
 
number1 = random.randint(0,9)
number2 = random.randint(0,9)
 
if number1 < number2:
    number1, number2 = number2, number1
 
answer = eval(input("what is the " + str(number1) + " - " + str(number2)+ " ? "))
 
while number1 - number2 != answer:
    answer =eval(input("Wrong answer. try again. what is the "+ str(number1) + " - " + str(number2)+ " ? "))
 
print("You got it!")
cs

 

 

5.3 for 루프(The for Loop)

- for문은 각 시퀀스 값에 따라 반복하는 명령문이다.

- 반복을 얼마나 할 지 정확한(exact) 횟수를 기반으로 구성되는 반복문인다.

- while문과 비교해보자면 아래와 같다.

 

i = initialValue

while i < endValue :

#Loop body

i += 1

이 while문 코드와 아래의 for문 코드는 동일한 의미이다.

 

for i in range(initialValue, endValue)

#Loop body

 

*for 문 형식

for var in sequence

 

- 변수 var는 각각의 연속된 시퀀스 값을 가진다.

- 차후에 시퀀스 타입에 대해 다룰 예정이다.

 

- range(a, b) 함수각각의 정수 시퀀스를 반환하는 함수이다.

ex) a, a+1 ... b-2, b-1

 

*range() 예시

for v in range(4,8)

print(v)

....

4

5

6

7

 

- range() 함수두 가지의 버전이 더 존재한다. ex) range(a), range(a, b, k)

- range(a)는 range(0, a)와 같은 의미이다.

- range(a,b,k)에서 k는 각 시퀀스 값k만큼 더하면서 반복을 진행하라는 의미를 가지고 있다.

- 즉 range(a,b,k)는 a부터 시작에 b까지 k씩 더하면서 반복문을 실행한다.

- 만약 k가 음수라면 빼면서 진행도 가능하다.

- 시퀀스 값은 반드시 정수이어야 한다.

 

*range(a,b,k) 예시

for v in range(3, 9, 2)

print(v)

 

3

5

7

참고 문헌 : Introduction to Programming Using Python / Y.DANIEL LIANG



본 게시물은 개인적인 용도로 작성된 게시물입니다. 이후 포트폴리오로 사용될 정리 자료이니 불펌과 무단도용은 하지 말아주시고 개인 공부 목적으로만 이용해주시기 바랍니다.


교재 영어 원서를 직접 번역하여 정리한 게시물이므로 일부 오타, 의역이 존재할 수 있습니다. 틀린 부분이 있다면 댓글로 알려주시면 감사하겠습니다. 

 

 

댓글