컴퓨터를 통하여 문제를 해결하는 가장 중요한 이유 중에는 계속적으로 반복하는 작업을 컴퓨터가 대신 처리하여 주는 것이다.
이런 기능을 반복문이라고 하며, 대부분의 프로그래밍 언어는 다양한 반복문을 제공한다.
Python 언어는 for
와 while
문법을 제공하는데, 본 수업에서는 for
구문에 대해서 공부하도록 한다.
반복문(loop 혹은 repetition)은 소프트웨어의 일부를 원하는 만큼 계속 반복할 수 있는 기능을 말합니다.
이전 수업인 Step.4 Function Part 2
의 구구단 프로그램을 다시 보도록 합시다.
def calcGugudan(dan):
print(dan, " * ", 1, " = ", dan * 1)
print(dan, " * ", 2, " = ", dan * 2)
print(dan, " * ", 3, " = ", dan * 3)
print(dan, " * ", 4, " = ", dan * 4)
print(dan, " * ", 5, " = ", dan * 5)
print(dan, " * ", 6, " = ", dan * 6)
print(dan, " * ", 7, " = ", dan * 7)
print(dan, " * ", 8, " = ", dan * 8)
print(dan, " * ", 9, " = ", dan * 9)
제대로 동작하고 있는 프로그램은 맞지만, 자세히 바라보면, 함수의 1번째 줄부터 9번깨 줄까지 차이점은 숫자 1~9일 뿐, 그외는 모두 동일하다.
첫번째 줄에서 1로 설정된 변수 x
가 다음줄로 갈수록 x = x + 1
의 형태로 늘어나는 방식인 것이다.
반복문은 이렇게 일정 규칙을 가지면서 (혹은 똑같은 줄을) 여러번 반복하는 경우를 위해서 대부분의 언어에서 제공되는 기능이다.
for
문법을 이용한 반복문 이해하기¶Python 언어세어 반복문을 구현하는 첫번째 문법은 for
구문이며, for
구문의 기본적인 구조는 다음과 같다.
지금까지 배운 내용만으로 만든, 다음의 실제 동작하는 프로그램을 통해서 이해해 봅니다.
for i in [1,2,3,4,5,6,7,8,9] :
print(i)
첫째 줄의 for
문장을 사용하여, 반복할 구문(들)의 시작을 나타낸니다.
따라서 for
문장이 있는 줄의 마지막에 :
이 있는 것을 볼 수 있는데, 앞서의 if
구문과 함수의 시작
과 동일한 영역 표시임을 알 수 있습니다.
for
구문뒤에 i in [1,2,3,4,5,6,7,8,9]
구문은 앞서 수업에서 공부한 in
문법으로서 i가 리스트 안에 포함되어 있으면 True
라는 의미였습니다.
in
문법이 이렇게 반복문에 사용되면, 하나의 의미가 더 추가되는데, 이는 반복문이 처음 실행될때 리스트의 첫번째 값을 가져와서 i
에 저장하며,
이후 반복문이 한번 실행될때마다 리스트에서 값을 순서대로 하나씩 읽어서 i
에 저장한다는 의미입니다.
둘째 줄부터는 반복할 문장을 필요한 만큼 작성하면 되며, 지금은 간단하게 i
에 있는 값을 화면에 출력하는 용도로만 작성하였습니다.
위의 예제 프로그램을 아래의 입력창에 직접 입력하고 실행하여 동작 결과를 이해해 봅니다.
for i in [1,2,3,4,5,6,7,8,9] :
print(i)
1 2 3 4 5 6 7 8 9
for
문법을 이용한 구구단 함수의 개선 이해하기¶그러면 for
문장을 사용하여 앞서의 calcGugudan()
함수를 개선해 봅니다.
아래의 입력창의 #start
와 #end
사이에 for
문법을 사용한 calcGugudan()
를 미리 작성해 봅시다.
def calcGugudan(dan):
for i in [1,2,3,4,5,6,7,8,9] :
print(dan, " * ", i, " = ", dan * i)
위의 입력창에 제대로 for
문장을 사용하여 앞서의 calcGugudan()
함수를 개선했다면 다음과 유사한 코드를 만들었을 것 입니다.
def calcGugudan(dan):
for i in [1,2,3,4,5,6,7,8,9] :
print(dan, " * ", i, " = ", dan * i)
이왕 프로그램을 수정하는 김에, calcGugudan()
함수를 호출하는 부분도 for
반복문을 사용해서, 1단부터 9단까지 동작시켜 봅니다.
아래의 입력창의 #start
와 #end
사이에 for
문법을 사용한 calcGugudan()
의 호출 부분을 작성해 봅시다.
calcGugudan(9)
9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81
range()
함수 이해하기¶range()
함수는 반복문과 함께 자주 사용되는데, 다음과 같은 형태로 자주 사용합니다.
(a) range(limit)
: 0
에서 limit - 1
까지를, 1씩 증가하는 형태의
값으로 돌려 줍니다.
(b) range(start, end)
: start
에서 end
까지를, 1씩 증가하는 형태의
값으로 돌려 줍니다.
(c) range(start, end, step)
: start
에서 end
까지의 값을 돌려 주는데, 숫자의 증가폭을 step
만큼으로 합니다.
아래의 코드는 각각의 예를 실제 동작하는 프로그램으로 만든 것이니, 아래의 입력창에 코드를 실제 입력하고 실행하여 결과를 확인해 봅니다.
print("Case.1")
for i in range(3) :
print(i)
print("Case.2")
for i in range(1,3) :
print(i)
print("Case.3")
for i in range(0,10,2) :
print(i)
print("Case.4")
for i in range(10,0,-2) :
print(i)
print("Case.1")
for i in range(3) :
print(i)
print("Case.2")
for i in range(1,3) :
print(i)
print("Case.3")
for i in range(0,10,2) :
print(i)
print("Case.4")
for i in range(10,0,-2) :
print(i)
Case.1 0 1 2 Case.2 1 2 Case.3 0 2 4 6 8 Case.4 10 8 6 4 2
이제 우리는 다양한 방법으로 제대로된 구구단 프로그램을 완성할 수 있는 단계로 왔습니다.
calcGugudan()
함수를 사용하지 않고 다음 처럼 List in Lists
의 형태로 구구단의 결과를 저장하고 출력 할 수 있는 프로그램을 만들어 보십시오.
[' 1 ', ' 2 ', ' 3 ', ' 4 ', ' 5 ', ' 6 ', ' 7 ', ' 8 ', ' 9 ']
[' 2 ', ' 4 ', ' 6 ', ' 8 ', ' 10 ', ' 12 ', ' 14 ', ' 16 ', ' 18 ']
[' 3 ', ' 6 ', ' 9 ', ' 12 ', ' 15 ', ' 18 ', ' 21 ', ' 24 ', ' 27 ']
[' 4 ', ' 8 ', ' 12 ', ' 16 ', ' 20 ', ' 24 ', ' 28 ', ' 32 ', ' 36 ']
[' 5 ', ' 10 ', ' 15 ', ' 20 ', ' 25 ', ' 30 ', ' 35 ', ' 40 ', ' 45 ']
[' 6 ', ' 12 ', ' 18 ', ' 24 ', ' 30 ', ' 36 ', ' 42 ', ' 48 ', ' 54 ']
[' 7 ', ' 14 ', ' 21 ', ' 28 ', ' 35 ', ' 42 ', ' 49 ', ' 56 ', ' 63 ']
[' 8 ', ' 16 ', ' 24 ', ' 32 ', ' 40 ', ' 48 ', ' 56 ', ' 64 ', ' 72 ']
[' 9 ', ' 18 ', ' 27 ', ' 36 ', ' 45 ', ' 54 ', ' 63 ', ' 72 ', ' 81 ']
다양한 방법으로 작성이 가능한데, 최소한 3가지 방법을 고민하여, 아래의 입력창에 코드를 실제 입력하고 실행하여 결과를 확인해 봅니다.
def calcGugudan(dan):
for i in range(1,10):
print("{} x {} = {}".format(dan,i,i*dan))
calcGugudan(7)
7 x 1 = 7 7 x 2 = 14 7 x 3 = 21 7 x 4 = 28 7 x 5 = 35 7 x 6 = 42 7 x 7 = 49 7 x 8 = 56 7 x 9 = 63
# 직접해봅니다
# 직접해봅니다
다음의 요구 사항에 맞는 프로그램을 개발하여 아래의 입력창을 통해서 실행합니다.
(a) 리스트 a가 [1,2,1,8,9,4,2,5,1,3]
로 초기화 되어 있습니다.
(b) 사용자로부터 정수 하나를 입력받습니다.
(c) 리스트 a의 아이템 중 사용자가 입력한 숫자보다 작은 숫자를 모두 출력하는 프로그램을 구현합니다.
(d) 이때, 출력할 숫자를 하나씩 출력하지 말고, 해당되는 숫자들을 모아 새로운 list를 만들어서 그 list를 출력하게 합니다.
a = [1,2,1,8,9,4,2,5,1,3]
value = int(input(prompt='숫자입력 : '))
result = []
for i in a:
if i<value:
result.append(i)
print(result)
숫자입력 : 3 [1, 2, 1, 2, 1]
다음의 요구 사항에 맞는 프로그램을 개발하여 아래의 입력창을 통해서 실행합니다.
(a) 두 개의 list a와 b를 다음과 같이 정의합니다.
(b) a = [1,1,2,3,5,8,13,24,34,55]
(c) b = [1,1,2,3,4,5,6,7,8,9,10,11,12]
(d) 두 list에 모두 포함되는 요소(element)를 모아서, 중복되는 요소가 없는 새로운 리스트 c를 만든 후, 결과를 출력합니다.
a = [1,1,2,3,5,8,13,24,34,55]
b = [1,1,2,3,4,5,6,7,8,9,10,11,12]
result = []
for i in a:
if i not in result:
result.append(i)
for i in b:
if i not in result:
result.append(i)
print(result)
[1, 2, 3, 5, 8, 13, 24, 34, 55, 4, 6, 7, 9, 10, 11, 12]
Step_13_File (0) | 2021.06.04 |
---|---|
Step_12_Loop_Part_2 (0) | 2021.06.02 |
Step_10_List (0) | 2021.05.28 |
Step_09_Method_and_Class (0) | 2021.05.26 |
Step_08_Module (0) | 2021.05.23 |
댓글 영역