티스토리 뷰
5.7 break와 continue 키워드(Keywords break and continue)
- break와 cotininue 기능은 루프문의 사용성(controls)을 더 높여준다.
- break 키워드를 이용하여 루프를 즉각적으로 종료시킬 수 있다.
*break 키워드 예시
1
2
3
4
5
6
7
8
9
10
11 |
sum = 0
number = 0
while number <= 20:
number += 1
sum += number
if sum >= 100:
break #sum이 100이 되면 while문을 종료하고 다음 명령어로 넘어간다.
print("The number is ", number)
print("The sum is ", sum) |
cs |
- while문은 변수 number가 20이 될 때까지 명령문을 반복해야한다.
- 하지만 line 7, 8에 있는 sum >= 100 일 때 break 키워드를 실행하게 되어있다.
- 변수 number가 20이 되지 않더라도, sum이 100 이상이 되면 break 키워드를 만나 루프문을 종료하도록 되어 있다.
- 만약 line 7,8이 없다면 number는 20까지 반복하고 sum 역시 210이 출력된다.
- continue 키워드는 현재 수행중인 반복(iteration)을 종료시킨 후, 루프문 바디(body)의 끝부터 해석한다.
- 즉 continue 키워드는 하나의 반복(iteration)을 끝내고, break문은 루프문(loop)을 끝내는 키워드이다.
- 아래는 1부터 20까지, 숫자 10과 11을 제외한 합들을 구하는 프로그램이다.
* continue 키워드 예시
1
2
3
4
5
6
7
8
9
10 |
sum = 0
number = 0
while number < 20:
number += 1
if number == 10 or number == 11:
continue #숫자 10과 11을 만나면 continue 아래에 있는 명령어를 건너뛰고 body 끝으로...
sum += number
print("The number is ", number)
print("The sum is ", sum) |
cs |
- line 6,7에서 변수 number가 10, 11이 되었을 때, continue 키워드가 실행된다.
- continue 키워드가 실행되면 현재 진행중인 반복을 중단하고 continue 키워드 이후의 루프문 바디(body)안에 있는 명령어들은 실행되지 않은 채 다음 반복을 진행한다.
- 만약 line 6,7이 없다면 sum의 값은 210으로 출력 된다.
* 인수 구하는 프로그램
break 키워드 이용
n = eval(input("Enter an integer >= 2: "))
factor = 2
while factor <= n:
if n % factor == 0:
break
factor += 1
print("The smallest factor other than 1 for", n, "is", factor)
break 키워드 이용 X
n = eval(input("Enter an integer >= 2: "))
found = False
factor = 2
while factor <= n and not found:
if n % factor == 0:
found = True
else:
factor += 1
print("The smallest factor other than 1 for", n, "is", factor)
- 위 처럼 적당한 break 키워드와 continue 키워드는 코드를 간단하게 만들어 주지만, 무분별한 사용은 너무 많은 종료 포인트를 만들어 내기 때문에 가독성을 떨어트린다.
- 다른 프로그래밍 언어에서는 goto 명령문도 있지만, 에러를 야기시키기 쉬워 잘 사용하지 않는게 관례이다.
- 파이썬의 break문과 continue문은 일반적인 goto 명령문과 달리 오직 루프문 안에서만 실행이 가능하다.
5.8 소수 출력하기(Displaying Prime Numbers)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 |
number = eval(input("표시할 최대 소수 입력 : "))
count = 0
for i in range(2,number+1):#나누어질 숫자 i
for k in range(2,number+1):# 나눌 숫자 k
if(i%k == 0):# i가 k로 나누어 떨어진다면 break
break
if(i == k):#나눈 수 k가 나누어진 수 i와 같다면(자기 자신이라면) 출력
print(format(k,"5d"), end = '')
count += 1
if(count == 10):#10개의 숫자가 출력되면 다음줄로 enter
print()
count = 0 |
cs |
5.9 랜덤 워크(random walk)
- 이 예제는 터틀(turtle)이 격자안에서 무작위로 움직이는 프로그램이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 |
import turtle as t
from random import randint
t.speed(1)
#16 x 16 격자 만들기
t.color("gray")
x = -80
for y in range(-80,80+1,10): # 10픽셀 간격으로 수평선 그리기
t.penup()
t.goto(x,y)
t.pendown()
t.forward(160)
y = 80
t.right(90)
for x in range(-80, 80 + 1, 10): # 10 픽셀 간격으로 수직선 그리기
t.penup()
t.goto(x,y)
t.pendown()
t.forward(160)
t.pensize(3)
t.color("red")
t.penup()
t.goto(0,0) # 중앙으로 이동
t.pendown()
x = y = 0#격자를 그렸던 x,y값 초기화
while abs(x) < 80 and abs(y) < 80 : #격자의 끝에 도달하면 이동 종료
r = randint(0,3) # 위, 아래, 좌, 우를 결정할 변수 r
if r == 0: #오른쪽으로 한 칸 이동
x += 10
t.setheading(0)
t.forward(10)
elif r == 1: #아래쪽으로 한 칸 이동
y -= 10
t.setheading(270)
t.forward(10)
elif r == 2: #왼쪽으로 한 칸 이동
x -= 10
t.setheading(180)
t.forward(10)
elif r == 3: #위쪽으로 한 칸 이동
y += 10
t.setheading(90)
t.forward(10)
t.done() |
cs |
참고 문헌 : Introduction to Programming Using Python / Y.DANIEL LIANG
※
본 게시물은 개인적인 용도로 작성된 게시물입니다. 이후 포트폴리오로 사용될 정리 자료이니 불펌과 무단도용은 하지 말아주시고 개인 공부 목적으로만 이용해주시기 바랍니다.
교재 영어 원서를 직접 번역하여 정리한 게시물이므로 일부 오타, 의역이 존재할 수 있습니다. 틀린 부분이 있다면 댓글로 알려주시면 감사하겠습니다.
※
'파이썬 > 이론' 카테고리의 다른 글
[파이썬]반환값이 있는/없는 함수, 위치인자와 키워드 인자 (2) | 2017.07.24 |
---|---|
[파이썬]함수, 함수 정의, 함수 호출 (1) | 2017.07.23 |
[파이썬]중첩 루프, 최대공약수, 몬테카를로 시뮬레이션 (0) | 2017.07.21 |
[파이썬]루프(while문 for문) (0) | 2017.07.21 |
[파이썬]조건식,연산자 우선순위와 결합법칙, 객체의 위치파악 (0) | 2017.07.18 |
- Total
- Today
- Yesterday
- 자바
- 파이썬 for
- 파이썬 연산자
- 자바스크립트 그래프
- 자바 에센셜 실습문제
- 파이썬 진수 변환
- css
- 파이썬 while
- 명품 c++ 실습
- 백준 1874
- 버츄어박스
- 파이썬 문자열
- 파이썬 리스트
- css 박스
- 자바스크립트 자료구조
- 파이썬 단계적 개선
- 파이썬
- 파이썬 터틀
- 웹
- 파이썬 if문
- 파이썬 객체
- 자료구조
- css 그리드
- 파이썬 선택문
- 파이썬 예제
- 파이썬 함수
- 파이썬 클래스
- 백준 11501
- 백준
- 백준 10451
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |