01. 제어문 - 반복문 While, for 문
1. While문
- '참'일동안 실행합니다.
- 조건을 만족하지 않으면 한번도 실행을 하지 않습니다.
- 순환 횟수를 정확히 지정할 수 없을 경우 사용합니다.
1) 1씩 증가시키는 누적 알고리즘
su = su + 1
2) 1부터 5까지 출력
- 무한 루틴을 이용하는 경우: while(true){...
- while문에 조건을 명시한 경우: while(index <= 4){...
[실행 화면]
▷ While1.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
su = 0
while True:
su = su + 1
print(su)
if su == 5:
break
print('-----------------')
su = 6
while 1: # 0이외의 값은 모두 참처리
su = su -1
print(su)
if su == 1:
break
print('-----------------')
su = 0
while su <= 4:
su += 1
print(su)
-------------------------------------------------------------------------------------
수가 발견되면 출력하고 종료하는 프로그램을 제작하세요.
① 필수 코드
su = 0
③ 2, 3, 4, 5, 6, 7, 8, 9의 배수인 수만 출력
▷ While2.py
- \ +Enter: 문장의 연결을 의미
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
su = 0
while True:
su = su + 1
if su % 2 == 0 and su % 3 == 0 and su % 4 == 0 and \
su % 5 == 0 and su % 6 == 0 and su % 7 == 0 and \
su % 8 == 0 and su % 9 == 0:
print(su)
break
-------------------------------------------------------------------------------------
* switch ~ case, do ~ while문은 존재하지 않는다.
02. 제어문 - 반복문 for문
1. for문
- 반복 횟수가 지정되어 있는 경우 사용합니다.
1) 유형 1
for 변수 in 범위:
반복으로 실행할 코드
2) 유형 2
for 변수 in 범위:
반복으로 실행할 코드
else:
for 구문이 모두 실행되었을 때 실행할 코드
2. 기본적인 for문의 사용
[출력 화면]
A
▷ For1.py 기초 문법
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
str1 = 'ABC가나다123'
for c in str1:
print(c)
print('--------------')
listVal = [1, 2, 3, 4, 5]
for c in listVal:
print(c, end='') # end='' 라인 변경 안됨
print()
print('--------------')
months = {'january':'1월', 'february':'2월', 'march':'3월'} # Dictionary
for c in months:
print(c) # 키
print('--------------')
for c in months:
print(months[c]) # 값
print('--------------')
for i in range(5): # 0 ~ 4
print('i: ' + str(i))
print('--------------')
scope = [1, 2, 3, 4, 5]
for x in scope:
print(x)
if x < 3:
continue
else:
break
print('--------------')
for i in range(1, 5): # 1 ~ 4
print(i)
else:
print('for문을 종료했습니다.')
-------------------------------------------------------------------------------------
① 필수 코드
index = 0;
. for문 사용
③ 2 단계: 2의 배수이면서 3의 배수이고 4의 배수인 수만 출력
. for문안에 if문이 있어야합니다.
. if 문에 and를 사용하면 편리합니다.
[실행 화면]
▷ For2.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
index = 0
for index in range(1, 101):
if index % 2 == 0 and index % 3 == 0 and index % 4 == 0:
print(index)
print('최종값: ' + str(index))
-------------------------------------------------------------------------------------
[실습 1] 구구단 출력
- 출력할 구구단: 2
① 1 단계: i 변수를 증가시키며 1부터 9까지 출력
② 2 단계: 단의 출력
2 x 1
2 x 2
2 x 3
...
...
2 x 9
③ 3 단계: "=" 출력
2 x 1 =
2 x 2 =
2 x 3 =
...
...
④ 4 단계: 곱하기 결과 출력
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
...
...
2 x 9 = 18
[실행 화면]
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
▷ Gugudan.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
for i in range(1, 10):
print('2 × ' + str(i) + ' = ' + str(2 * i))
-------------------------------------------------------------------------------------
[실습 2] 1단 ~ 18단까지 구구단 출력
- for문은 다른 for문을 요소로 가지고 있을 수 있습니다.
- for문이 2개 사용됩니다.
예) 실시간 펜션 예약 시스템: http://hae5reum.com/
① Gugudan.py 복제하여 Gugudan2.py를 생성합니다.
② 'dan' 이라는 변수가 선언된 for 문을 이용하여 2단을 18번 출력하는
for문을 작성하세요. 기존에 작성된 for문은 소스가 변경되지 않습니다.
③ 출력 부분을 변경하여 1단부터 18단까지 출력하세요.
④ 출력되는 단의 제목을 추가하세요. 예) 1 단
[실행 화면]
1단
1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
1 x 4 = 4
1 x 5 = 5
1 x 6 = 6
1 x 7 = 7
1 x 8 = 8
1 x 9 = 9
2단
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
3단
3 x 1 = 3
3 x 2 = 4
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27
...
...
...
▷ Gugudan2.java
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
for dan in range(1, 19):
print()
print(str(dan) + ' 단')
for i in range(1, 10):
print(str(dan) + ' × ' + str(i) + ' = ' + str(dan * i))
-------------------------------------------------------------------------------------
[과제 1] 1부터 100까지의 합을 구하세요.
[실행 화면]
▷ For3.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
tot = 0
for i in range(1, 101):
tot = tot + i
print('1부터 100까지의 합: ' + str(tot))
-------------------------------------------------------------------------------------
[과제 2] 1부터 100까지의 짝수의 합과 홀수의 합을 구하세요.
[실행 화면]
홀수의 합: 2500
▷ For4.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
even = 0
odd = 0
for i in range(1, 101):
if (i % 2 == 0):
even = even + i
else:
odd = odd + i
print('짝수의 합: ' + str(even))
print('홀수의 합: ' + str(odd))
-------------------------------------------------------------------------------------
댓글