관리 메뉴

8. 파이썬(Python) 반복문2(for) 본문

Python/Python 기본 개념

8. 파이썬(Python) 반복문2(for)

ª_ª 2017. 8. 28. 10:04
728x90
반응형


for문 이란?

for문도 반복문(loop-control statements)의 한 종류입니다. while문과 for문은 각자의 장단점이 있습니다. for문은 while문에 비해 직관적으로 쓸 수 있다는 장점이 존재합니다.

 

1. for문 기본 구조


for 변수 in (범위 or 리스트 or 튜플 or 문자열) :

            조건에 만족하는 문장1

            조건에 만족하는 문장2

            조건에 만족하는 문장3

            조건에 만족하는 문장4

            ......

 

for문의 기본 구조입니다. 범위, 리스트, 튜플, 문자열의 첫 번째 요소부터 마지막 요소까지 차례대로 대입되어 실행됩니다.

 

1.1 범위 예제

범위 예제를 사용할 때 많이 쓰는 함수가 있습니다. 그 함수는 range(start, stop)입니다. start는 첫 번째로 시작할 위치고 stop는 마지막 위치입니다. 마지막이 끝이 될 수가 있고 가운데가 될 수 있고 그렇습니다. 사용자가 정하는 마지막 위치입니다. start이상 stop미만입니다.

 

"1부터 10까지를 출력"

>>> for i in range(1, 11):

            print(i)

 

1

2

3

4

5

6

7

8

9

10

 

1.2 리스트 예제

>>> list1 = ["a", "b", "c", "d"]

>>> for i in list1:    # i0으로 초기화 된 상태입니다.

print(i)


a

b

c

d

 

list1[i]가 접근되면서 i0에서 0, 1, 2, 3 증가하게 됩니다. 그래서 list1 안에 있는 문자가 출력 되게 됩니다.

 

범위 예제로도 표현이 가능합니다.

>>> for i in range(0, len(list1)):

print(list1[i])

 

a

b

c

d

 

1.3 튜플 예제

>>> tuple1 = ['a', 'b', 'c', 'd']

>>> for t in tuple1:

print(t)


a

b

c

d

 

튜플도 범위 예제로 표현이 가능합니다.

>>> for t in range(0, len(tuple1)):

print(tuple1[t])


a

b

c

d

 

1.4 문자열 예제

>>> str1 = "Hello World"

>>> for s in str1:

print(s)

 

H

e

l

l

o

W

o

r

l

d

 

문자열도 마찬가지로 범위를 설정할 수 있습니다. World만 추출하고 싶으면 시작하는 부분을 바꿔도 됩니다.

>>> for s in range(6,len(str1)):

print(str1[s])

 

W

o

r

l

d

 

2. for문 응용 하기

이번에는 for문을 활용해서 시험 성적에 따른 등급을 표현 하려고 합니다. 예를 들어 90점 이상이면 A, 80점 이상이면 B, 70점 이상이면 C 60점 이상이면 D, 나머지는 F입니다.

 

2.1 성적 프로그램

>>> student = [100, 70, 50, 65, 85]

>>> num = 0

>>> for stu in student:

num = num + 1

if stu >= 90:

print("%d번 학생의 점수는 %d점 이어서 성적은 A 입니다." % (num, stu))

elif stu >= 80:

print("%d번 학생의 점수는 %d점 이어서 성적은 B 입니다." % (num, stu))

elif stu >= 70:

print("%d번 학생의 점수는 %d점 이어서 성적은 C 입니다." % (num, stu))

elif stu >= 60:

print("%d번 학생의 점수는 %d점 이어서 성적은 D 입니다." % (num, stu))

else:

print("%d번 학생의 점수는 %d점 이어서 성적은 F 입니다." % (num, stu))

 

1번 학생의 점수는 100점 이어서 성적은 A 입니다.

2번 학생의 점수는 70점 이어서 성적은 C 입니다.

3번 학생의 점수는 50점 이어서 성적은 F 입니다.

4번 학생의 점수는 65점 이어서 성적은 D 입니다.

5번 학생의 점수는 85점 이어서 성적은 B 입니다.

 

당연히 range() 함수를 사용해서 코드를 만들 수 있습니다.

 

>>> student = [100, 70, 50, 65, 85]

>>> for num in range(0, len(student)):

if student[num] >= 90:

print("%d번 학생의 점수는 %d점 이어서 성적은 A 입니다." % (num+1, student[num]))

elif student[num] >= 80:

print("%d번 학생의 점수는 %d점 이어서 성적은 B 입니다." % (num+1, student[num]))

elif student[num] >= 70:

print("%d번 학생의 점수는 %d점 이어서 성적은 C 입니다." % (num+1, student[num]))

elif student[num] >= 60:

print("%d번 학생의 점수는 %d점 이어서 성적은 D 입니다." % (num+1, student[num]))

else:

print("%d번 학생의 점수는 %d점 이어서 성적은 F 입니다." % (num+1, student[num]))


1번 학생의 점수는 100점 이어서 성적은 A 입니다.

2번 학생의 점수는 70점 이어서 성적은 C 입니다.

3번 학생의 점수는 50점 이어서 성적은 F 입니다.

4번 학생의 점수는 65점 이어서 성적은 D 입니다.

5번 학생의 점수는 85점 이어서 성적은 B 입니다. 


2.2 구구단 만들어 보기

>>> for i in range(2, 10):    # 2,3,4,5... 단을 표시할 부분

print("%d" %i)

for j in range(1, 10):    # 1,2,3,4... 곱할 부분

print("%d * %d = %d" %(i, j, i*j))

 

2

2 * 1 = 2

2 * 2 = 4

2 * 3 = 6

2 * 4 = 8

2 * 5 = 10

2 * 6 = 12

2 * 7 = 14

2 * 8 = 16

2 * 9 = 18

3

3 * 1 = 3

3 * 2 = 6

3 * 3 = 9

3 * 4 = 12

3 * 5 = 15

3 * 6 = 18

3 * 7 = 21

3 * 8 = 24

3 * 9 = 27

4

4 * 1 = 4

4 * 2 = 8

4 * 3 = 12

4 * 4 = 16

4 * 5 = 20

4 * 6 = 24

4 * 7 = 28

4 * 8 = 32

4 * 9 = 36

5

5 * 1 = 5

5 * 2 = 10

5 * 3 = 15

5 * 4 = 20

5 * 5 = 25

5 * 6 = 30

5 * 7 = 35

5 * 8 = 40

5 * 9 = 45

6

6 * 1 = 6

6 * 2 = 12

6 * 3 = 18

6 * 4 = 24

6 * 5 = 30

6 * 6 = 36

6 * 7 = 42

6 * 8 = 48

6 * 9 = 54

7

7 * 1 = 7

7 * 2 = 14

7 * 3 = 21

7 * 4 = 28

7 * 5 = 35

7 * 6 = 42

7 * 7 = 49

7 * 8 = 56

7 * 9 = 63

8

8 * 1 = 8

8 * 2 = 16

8 * 3 = 24

8 * 4 = 32

8 * 5 = 40

8 * 6 = 48

8 * 7 = 56

8 * 8 = 64

8 * 9 = 72

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

 

3. 리스트 안에 for문 포함시키기

리스트 안에 for문을 포함할 수가 있습니다. 리스트 내포(List comprehension)를 이용 하는 것입니다.

 

3.1 기본 예제

>>> list1 = [1,2,3,4,5]

>>> result = []

>>> for num in list1:

result.append(num * 5)    # append())()안에 있는 값을 추가 하는 것입니다.

>>> print(result)

[5, 10, 15, 20, 25]

 

list1라는 리스트의 각 항목에 5을 곱한 결과를 result라는 변수에 넣는 예제입니다.

이것을 리스트 내포를 이용하면 간단하게 표현 할 수 있습니다.

 

3.2 리스트 내포의 기본 구조

[ 표현식 for 항목 in 반복 가능 객체 if 조건]

if 조건문은 생략이 가능합니다.

 

리스트 내포형식은 for문을 2개 이상 사용하는 것도 가능합니다.

[ 표현식 for 항목1 in 반복 가능 객체1 if 조건1

for 항목2 in 반복 가능 객체2 if 조건2

for 항목3 in 반복 가능 객체3 if 조건3

......

for 항목n in 반복 가능 객체n if 조건n]

 

3.2 리스트 내포를 사용

>>> list1 = [1, 2, 3, 4, 5]

>>> result = [ num * 5 for num in list1]

>>> print(result)

[5, 10, 15, 20, 25]

 

3.3 리스트 내포에서 if 조건문 사용

홀수만 5를 곱하게 하기

>>> list1 = [1, 2, 3, 4, 5]

>>> result = [ num * 5 for num in list1 if num % 2 != 0]

>>> print(result)

[5, 15, 25]

 


if, while, for 연습문제 풀러 가기


728x90
반응형
Comments