Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Archives
Today
Total
관리 메뉴

yeon-coding

4.Repetitive Statement(For) 본문

[Python]/Lecture

4.Repetitive Statement(For)

yeonTCH 2019. 11. 18. 00:19

 contents

 

1. 기본 for 문 
1-1. 반복문의 개념과 필요성 
1-2. for문의 개념 

2. 중첩 for문 
2-1. 중첩 for문의 개념 
2-2. 중첩 for문의 활용  
<<project 4-1>>  
quiz

 


 

 

 

안녕하세요~! 다들 잘 지내셨나요?

저번에는 조건문에 대해 배웠습니다. 기억이 안나시는 분들은 빠르게 내용을 훑고 오시는 것을 추천드립니다.

 

오늘은 반복문에 대해 배울 예정이예요.

아래는 오늘의 프로젝트입니다!

 

 

 

 

<1. 구구단 출력 프로그램>

 

 


 

1. 기본 for 문

 

 

1-1. 반복문의 개념과 필요성 

 

 

반복문은 말 그대로 문장을 여러 번 반복해서 만드는 것으로,

반복문이 없다면 코드의 길이가 매우 길게 늘어날 것 입니다.

 

 

하지만 반복문 덕분에 수만 번 이상 해야할 일을 간략히 할 수 있습니다.

반복문은 크게 forwhile문으로 나뉘는데, 먼저 for문 부터 살펴보겠습니다.

 

 

 

 

 

프로그램에서 반복은 왜 필요할까요? 다음의 코드를 작성하여 결과를 출력해봅시다.

 

Input

print("안녕하세요, yeon쌤의 파이썬강좌입니다.")
print("안녕하세요, yeon쌤의 파이썬강좌입니다.")
print("안녕하세요, yeon쌤의 파이썬강좌입니다.")

Output

안녕하세요, yeon쌤의 파이썬강좌입니다.
안녕하세요, yeon쌤의 파이썬강좌입니다.
안녕하세요, yeon쌤의 파이썬강좌입니다.

 

 

어렵지 않은 코드입니다. 한줄을 작성하고 복사, 붙여넣기를 이용해 작성하면 됩니다.

그렇다면, 3번이 아니라 10000번을 출력하라고 한다면 어떻게 될까요?

 

 

 

 

 

물론, 언젠가는 다 작성할 수 있겠지만 시간이 너무 오래 걸리고,

코드의 길이가 과도하게 길어질 것입니다.

 

 

 

이해가 되지 않더라도 아래의 코드를 한번 입력해보세요.

 

 

Input

for i in range(0,3,1):
	print("안녕하세요, yeon쌤의 파이썬강좌입니다.")

 

Output

안녕하세요, yeon쌤의 파이썬강좌입니다.
안녕하세요, yeon쌤의 파이썬강좌입니다.
안녕하세요, yeon쌤의 파이썬강좌입니다.

 

 

print 함수는 2행에서 한 번만 사용했음에도 불구하고, 총 3번의 출력이 나옵니다.

그럼, 이 함수에 대해 아래에서 배워볼까요~?

 

 

 

 

 

 


 

 

 

 

 

 

 

1-2. for문의 개념

 

 

 

for 문의 기본 형식은 다음과 같습니다.

 

range() 함수는 지정된 범위의 값을 반환합니다.

range(0, 3, 1)은 0에서 시작해 2까지 1씩 증가하는 값을 반환합니다.

 

 

 

 

 

표시된 숫자보다 하나 작은 숫자까지 반환되는 점에 주의해야 합니다.

예를 들어 3일 때는 이것보다 하나 작은 2까지 반환합니다.

 

실행할 문장이 여러 개라면 print() 문장 아래에 실행할 문장을 들여쓰기를 맞추어 계속 작성해야 합니다.

 

 

 

 

i값도 같이 출력해보면 다음과 같습니다.

 

Input

for i in range(0,3,1):
	print("%d : 안녕하세요, yeon쌤의 파이썬강좌입니다."%i)

 

Output

0 : 안녕하세요, yeon쌤의 파이썬강좌입니다.
1 : 안녕하세요, yeon쌤의 파이썬강좌입니다.
2 : 안녕하세요, yeon쌤의 파이썬강좌입니다.

 

 

i에 0, 1, 2를 차례로 대입한 후 다음과 같이 3회 반복합니다.

 

 

- 1회 : i에 0을 대입한 후 print() 함수 수행

- 2회 : i에 1을 대입한 후 print() 함수 수행

- 3회 : i에 2을 대입한 후 print() 함수 수행

 

 

 

 

 

 

 

간단한 print()함수에서 i값을 통해 맨앞에 숫자를 출력해보았습니다.

for문의 개념을 어느 정도 잡았다면, 이제는 다양한 예제를 작성하면서 for문을 응용해봅시다.

 

 

range()의 함수의 시작값을 2로 하고, i값을 1씩 줄여 0이 될 때까지 반복하도록 프로그램을 수정해봅시다.

 

Input

for i in range(2,-1,-1):
	print("%d : 안녕하세요, yeon쌤의 파이썬강좌입니다."%i)

Output

2 : 안녕하세요, yeon쌤의 파이썬강좌입니다.
1 : 안녕하세요, yeon쌤의 파이썬강좌입니다.
0 : 안녕하세요, yeon쌤의 파이썬강좌입니다.

 

range() 함수의 증가값을 -1로 바꾸고, 시작값은 2부터 시작해야합니다.

주의할 점은 2, 1, 0이 나와야하므로 끝값은 그것보다 하나 더 진행한 -1로 해야 합니다.

그래야 0까지 처리됩니다.

 

 

 

 

 

이번에는 for 문 안에서 i값을 활용할 수 있도록 1~5의 숫자를 차례로 출력해 봅시다.

 

Input

for i in range(1,6,1):
	print("%d"%i,end=" ")

Output

1 2 3 4 5

 

range(1, 6, 1)은 1부터 5까지 반환합니다.

Output을 보면 특이하게도 한줄로 출력이 되었는데,

print()함수 내의 마지막에 end=" "를 넣으면 마지막을 공백으로 처리해 한 칸씩 띄어 써 출력하게 됩니다.

이를 삭제하고 실행하면 print()함수가 끝날 때마다 자동으로 다음 행으로 넘어갑니다.

 

 

 

그렇다면, 1부터 10까지의 합을 for문을 이용해 출력하려면 어떻게 해야할까요?

 

 

 

Input

i,hap=0,0

for i in range(1,11,1):
	hap = hap +i
    
print("1에서 10까지의 합계:%d"%hap)

Output

1부터 10까지의 합계:55

 

위의 코드에서 주의할 점은 i변수와 hap 변수의 값입니다.

이 값들은 아래의 그림과 같이 변합니다,

 

 

코드의 1행에서 i 및 hap을 0으로 초기화 하고, 3~4행이 반복됩니다.

 

 

제 1회에서 i값 1을 현재의 hap값 0과 더해 다시 hap에 넣습니다.

제 2회에서는 i값 2를 현재의 hap값 1과 더해 다시 hap에 넣습니다.

...

이 과정을 10번 반복하면 1에서 10까지 더한 값이 hap에 들어갑니다.

 

 

 

 

 

 

 


 

 

2. 중첩 for문

 

 

 

2-1. 중첩 for문의 개념

 

 

 

 

지금까지의 내용을 잘 이해했다면 대부분의 for 문을 어렵지 않게 작성할 수 있을 것입니다.

중첩 for 문은 for 문 내부에 또 다른 for 문이 들어있는 형태입니다.

 

 

 

 

다음을 보면 바깥 for 문과 안쪽 for 문이 반복되고 있는데,

밑의 그림은 바깥 for문은 3회, 안쪽은 2회 반복된다고 가정되었습니다.

 

 

먼저 바깥 for문의 첫 번째 반복이 실행되고, 안쪽 for문의 '반복할 문장들'은 2번 반복됩니다.

다시 바깥 for문의 두 번째 반복이 실행되고, 안쪽 for문의 '반복할 문장들'은 또 처음부터 2번 반복됩니다.

마지막으로 바깥 for문의 세 번째 반복이 실행되고, 안쪽 for문의 '반복할 문장들'은 또 2번 반복됩니다.

 

 

그래서 결국 바깥쪽이 3번 도는 동안 안쪽은 각각 2번 돌게 되어 총 3 X 2 = 6을 반복합니다.

 

 

 

 

 

 

 

다음은 중첩 for문의 기본 형식을 보여주는 코드입니다.

 

Input

for i in range(0,3,1):
	for k in range(0,2,1):
    	print("i값: %d k값: %d"%(i,k))

Output

i값: 0 k값: 0
i값: 0 k값: 1
i값: 1 k값: 0
i값: 1 k값: 1
i값: 2 k값: 0
i값: 2 k값: 1

 

중첩 for문의 실행횟수 = 바깥 for문 반복횟수 X 안쪽 for문 반복횟수

 

첫 번째 for문은 i값이 0,1,2로 3회 수행되고, 두 번째 for문은 k값이 0,1로 2회 수행됩니다.

 

 

 

 

 

 

처리 순서를 그림으로 표현하면 다음과 같습니다.

 

 

 

 

 

 

 


 

 

 

 

 

 

 

2-2. 중첩 for 문의 활용

 

 

 

 

지금까지 공부한 중첩 for문을 활용해서 2단부터 9단까지 구구단을 출력해 봅시다.

다음 그림을 참고해서 코드를 짜보도록 하겠습니다.

 

 

 

 

구구단의 각 단은 2~9까지 1회만 증가한 후 끝나고, 뒷자리는 1~9까지 반복하면 됩니다.

 

Input

i,k=0,0

for i in range(2,10,1):
	for k in range(1,10,1):
    	print("%d x %d = %d"%(i,k,i*k))
    print("") 	#줄바꿈

 

Output

2 x 1 = 2
2 x 2 = 2
2 x 3 = 2
2 x 4 = 2
2 x 5 = 2
2 x 6 = 2
2 x 7 = 2
2 x 8 = 2
2 x 9 = 2

#..중략..#

9 x 7 = 63
9 x 8 = 72
9 x 9 = 81

 

3행에서는 2단에서 9단까지 반복하고, 4행에서는 각 단의 뒷자리 숫자를 1에서 9까지 반복합니다.

 

5행은 구구단을 형식에 맞추어 출력하고, 6행은 각 단이 끝나면 한 줄 띄우려고 사용했습니다.

 

 

 

 

 


 

 

 

 

여기까지 모두 따라왔다면 구구단 프로그램을 만들어 보도록하겠습니다.

 

 

 

<<Project 4-1>>

 

 

 

구구단을 표 형태로 출력하는 프로그램 입니다. 앞서 작성한 코드와 달리 오른쪽 공백까지 활용해

한 눈에 볼 수 있도록 프로그램을 만들어 주십시오.

 

 

 

출력 결과

 

 

 


 

 

오늘의 조건문 포스팅은 여기까지입니다.

궁금한 점이나 질문이 있다면 우측 하단의 실시간 채팅을 이용하시면 답변해드리도록 하겠습니다!

 

 

 

이 포스팅의 퀴즈, 프로젝트 등에 대해 토론을 하고 싶으시면

2019/11/19 - [[Python]/Dicussion] - [discussion] ask or discuss <4. Repetitive Sentence(For)>

에 가시면 됩니다 :)

 

 

퀴즈에 대한 답을 구글 설문지에 작성해 제출해주시면 정답을 발송해드립니다.

 

 

'[Python] > Lecture' 카테고리의 다른 글

6. List(1)  (0) 2019.12.04
5.Repetitive Statement(While)  (0) 2019.11.24
3.Conditional sentence  (0) 2019.11.11
2.Operator  (0) 2019.10.27
1. Variable and Data type  (0) 2019.10.08
Comments