11. 반복문 - for > 파이썬 기초

본문 바로가기
사이트 내 전체검색

회원로그인

올서베이넷
무료 온라인 설문 사이트
OVITII
웹 프레젠테이션 도구

파이썬 기초

11. 반복문 - for

페이지정보

글쓴이 관리자 조회 46,971 조회 날짜 19-05-07 15:16 / Update:19-05-07 17:35
댓글 0 댓글

SNS 공유

  • 트위터로 보내기
  • 페이스북으로 보내기
  • 구글플러스로 보내기

내용

for 반복문

 

프로그래밍 언어에서 반복문을 사용하기 위해서는 while문과 for문을 사용할 수 있다.

while과 for문은 문장을 반복을 한다는 점에서 같다.

차이점은 while문은 조건을 검사하여 참, 거짓을 판별하여 반복한다.

for문은 조건에 해당하는 구문을 순차적으로 변수에 대입하고 다음 문장을 실행한다. 조건에 해당하는 구문은 배열이나 영역이 된다.

 

따라서 상황에 따라, 또는 조건의 상태에 따라 while 또는 for문을 선택해서 사용하면 된다.

 

for문의 기본 구조

for 변수 in 리스트(또는 튜플, 문자열, 영역):

    문장1

    문장2

리스트나 튜플, 문자열, 영역의 첫 번째 요소부터 마지막 요소까지 차례로 변수에 대입되어 "문장1", "문장2" 등이 수행된다.

 

for문 예제

 

1. 리스트를 이용한 for문

tlist = ['one', 'two', 'three']

for x in tlist:

    print(x)

one

two

three

 

 

2. 리스트 내부의 튜플을 이용한 for문

a = [(1,2), (3,4), (5,6)]

for (first, last) in a:

    print(first + last)

3

7

11

위의 예는 a 리스트의 요소값이 튜플이기 때문에 각각의 요소들이 자동으로 (first, last)라는 변수에 대입된다.

※ 이 예는 튜플을 이용한 변수값 대입 방법과 매우 비슷하다.

(first, last) = (1, 2)

 

3. range를 이용한 for문

a = 5

for i in range(a):

    print(i)

0
1
2
3
4

range는 영역을 의미한다. range(시작숫자, 끝숫자) 또는 range(끝숫자) 형태로 사용할 수 있다. 끝숫자는 포함하지 않으며, 시작숫자가 없으면 0부터 시작한다.  

range(10)이면 0 ~ 9까지의 수를 의미하고, range(3, 10)이면 3 ~ 9까지의 숫자를 의미한다.

 

 

1269732368_1557265747.2677.png

 

 

코드 연습

 

1. 5명의 학생들의 시험 점수를 알아보는 코드를 작성해 본다.

 

소스

#리스트내부의 튜플은 번호, 이름, 성적을 의미한다.
marks = [(1, "마루", 95), (2, "슬찬", 94),(3, "이엔", 82),(4, "루크", 92),(5, "마이클", 75)]

for (num, name, mark) in marks: 
    print("%d번 학생 이름은 %s이며, 점수는 %d입니다." % (num, name, mark))

1번 학생 이름은 마루이며, 점수는 95입니다.
2번 학생 이름은 슬찬이며, 점수는 94입니다.
3번 학생 이름은 이엔이며, 점수는 82입니다.
4번 학생 이름은 루크이며, 점수는 92입니다.
5번 학생 이름은 마이클이며, 점수는 75입니다.

for문 다음에 콜론(:)이 들어가야 한다.

 

소스 분석

marks = [(1, "마루", 95), (2, "슬찬", 94),(3, "이엔", 82),(4, "루크", 92),(5, "마이클", 75)] 

변수이다.

marks는 리스트이며, 리스트 안에 5개의 튜플이 들어 있다. 

(1, "마루", 95)

튜플 내부의 요소는 순서대로 번호, 이름, 점수이다.

for (num, name, mark) in marks:

    문장1

for 반복문이다.

 

반복은 marks라는 리스트의 첫번째 요소부터 마지막 요소까지 반복되며, 순차적으로 (num, nam, mark)라는 변수에 대입된다.

 

즉, 첫번째 반복할 때 (num, name, mark) =  (1, "마루", 95)이고,

두번째 반복할 때는  (num, name, mark) =  (2, "슬찬", 94)이 된다.

 

문장1

 

    print("%d번 학생 이름은 %s이며, 점수는 %d입니다." % (num, name, mark))

문장1에 해당하는 구문이다.

 

문자열 포매팅에 의해 번호, 이름, 점수가 각각의 포맷에 맞게 출력된다.

 

 

 

1269732368_1557266841.0906.png

 

 

2. 1번 코드에서 90점이 넘은 학생들만 출력해본다.

 

for 반복문에서도 while 반복문처럼 continue가 사용된다. 문장 중에 continue를 만나면 for 문의 처음으로 이동하여 반복 조건을 수행하고 문장을 실행한다.

for 구문 다음에 if mark < 90: continue 만 추가하면 된다.

 

소스

#리스트내부의 튜플은 번호, 이름, 성적을 의미한다.
marks = [(1, "마루", 95), (2, "슬찬", 94),(3, "이엔", 82),(4, "루크", 92),(5, "마이클", 75)]

for (num, name, mark) in marks: 

    if mark < 90:
        continue

    print("%d번 학생 이름은 %s이며, 점수는 %d입니다." % (num, name, mark))

1번 학생 이름은 마루이며, 점수는 95입니다.
2번 학생 이름은 슬찬이며, 점수는 94입니다.
4번 학생 이름은 루크이며, 점수는 92입니다.

for문 다음에 콜론(:)이 들어가야 한다.

 

소스 분석

marks = [(1, "마루", 95), (2, "슬찬", 94),(3, "이엔", 82),(4, "루크", 92),(5, "마이클", 75)] 

변수이다.

marks는 리스트이며, 리스트 안에 5개의 튜플이 들어 있다. 

(1, "마루", 95)

튜플 내부의 요소는 순서대로 번호, 이름, 점수이다.

for (num, name, mark) in marks:

    문장1

for 반복문이다.

 

반복은 marks라는 리스트의 첫번째 요소부터 마지막 요소까지 반복되며, 순차적으로 (num, nam, mark)라는 변수에 대입된다.

 

즉, 첫번째 반복할 때 (num, name, mark) =  (1, "마루", 95)이고,

두번째 반복할 때는  (num, name, mark) =  (2, "슬찬", 94)이 된다.

 

문장1

    if mark < 90:
        continue

    print("%d번 학생 이름은 %s이며, 점수는 %d입니다." % (num, name, mark))

문장1에 해당하는 구문이다.

 

점수가 90점보다 적으면 continue 가 실행되어, for문의 제일 처음으로 돌아간다.

따라서 뒤의 print구문은 실행되지 않는다.

점수가 90보다 많으면, print 구문이 실행된다.

문자열 포매팅에 의해 번호, 이름, 점수가 각각의 포맷에 맞게 출력된다.

 

 

 

1269732368_1557267811.9526.png

 

 

3. 구구단 만들기

 

for와 range 함수를 이용하여 구구단을 만들어보자. 

 

구구단은 2단에서 9단까지 있으며, 각단은 1 에서 9까지를 곱한 결과이다.

이것을 분석하면, 구구단은 2 ~9 까지 한번 반복하고, 반복하는 문장 내부에서 1 ~ 9까지 반복한다.

즉, 두번의 반복문이 사용되어진다.

반복문이 중첩된다고 복잡하게 생각할 필요는 없다. 아래의 소스 코드를 확인한다.

 

소스

for x in range(2,10):        # (1)번 for문
    for y in range(1, 10):   # (2)번 for문
        print( x * y, end=" ") 
    print('') 
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

for문 다음에 콜론(:)이 들어가야 한다.

 

소스 분석

for x in range(2,10): # (1)번 for문

    문장1

    문장2

첫번째 for문이다.

range(2, 10)은 2 ~ 9까지의 숫자가 반복되어 x라는 변수에 들어간다.

문장1

 

for y in range(1, 10):  # (2)번 for문
        print( x * y, end=" ") 

문장1에 해당하며 두번째 for문이다.

 

첫번째 for문에서 x가 2일때, 3일때, 4일때....9일때 반복되는 내부 for문이다.

 

x가 2일때, y는 1 ~ 9까지 반복된다.

따라서 print문이 아래처럼 9번 반복하게 된다.

print( 2 * 1, end=" ") 

print( 2 * 2, end=" ") 

print( 2 * 3, end=" ") 

...

print( 2 * 9, end=" ") 

 

같은 방법으로 x가 3 ~ 9까지 반복된다.

 

문장2

 

   print('')

문장2에 해당하는 구문이다.

 

print('')문은 (2)번 for문이 실행되고 나서 실행된다.

print문은 기본적으로 "\n"을 끝에 포함하고 있다, 따라서 print문을 실행하면 다음줄로 넘어가서 출력이 된다.

 

※ print 문에 end = " "을 넣은 이유는 print함수 끝에는 \n이 적용된다. 따라서 \n을 " "으로 만들어서 다음 줄로 넘어가서 출력되는 것을 방지한다.

 

 

1269732368_1557269211.6793.png

 

 

 

for문 끝

댓글목록 sfs

총 30 건 , 1 페이지
게시물 검색
파이썬 기초 목록
번호 제목 글쓴이 조회 날짜
1 관리자 34622 05-02
2 관리자 41904 05-02
3 관리자 27615 05-02
4 관리자 42602 05-02
5 관리자 38228 05-02
6 관리자 32278 05-02
7 관리자 34085 05-02
8 관리자 32817 05-02
9 관리자 31687 05-02
10 관리자 34404 05-02
11 관리자 30146 05-02
12 관리자 52572 05-02
13 관리자 39102 05-02
14 관리자 35546 05-06
15 관리자 26601 05-06
16 관리자 25879 05-06
17 관리자 30244 05-06
18 관리자 26503 05-07
19 관리자 40771 05-07
열람중 관리자 46972 05-07
21 관리자 35774 05-07
22 관리자 36042 05-07
23 관리자 36546 05-28
24 관리자 46417 05-28
25 관리자 35530 05-28
26 관리자 38638 06-04
27 관리자 37883 06-11
28 관리자 37189 06-12
29 관리자 36043 12-21
30 관리자 27432 12-25
GNUBOARD_M
Copyright © JBMPA.com All rights reserved.