728x90
반응형

참고자료: https://wikidocs.net/22

 

03-3 for문

`[동영상 강의]` : [점프 투 파이썬 03-3 for문](https://www.youtube.com/watch?v=sbS5QayiCoE&list=PLGSQkvB9T6rvnDo…

wikidocs.net

 

# 반복문 for문

# for 문의 기본 구조

for 변수 in 리스트(또는 튜플, 문자열):
    수행할_문장1
    수행할_문장2
    ...

# 리스트나 튜플, 문자열의 첫 번째 요소부터 마지막 요소까지 차례로 변수에 대입되어 

‘수행할_문장1’, ‘수행할_문장2’ 등이 수행된다.

 

 


# 1. 전형적인 for 문

test_list = ['one', 'two', 'three'] 
for i in test_list: 
    print(i)


one 
two 
three


# ['one', 'two', 'three'] 리스트의 첫 번째 요소인 'one'이 먼저 i 변수에 대입된 후 print(i) 문장을 수행한다. 

다음에 두 번째 요소 'two'가 i 변수에 대입된 후 print(i) 문장을 수행하고 리스트의 마지막 요소까지 이것을 반복한다.



# 2. 다양한 for 문의 사용

a = [(1,2), (3,4), (5,6)]
for (first, last) in a:
    print(first + last)

3
7
11

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


# 3. for 문의 응용

# 총 5명의 학생이 시험을 보았는데 시험 점수가 60점 이상이면 합격이고 그렇지 않으면 불합격이다. 합격인지, 불합격인지 결과를 보여 주시오.

# marks1.py
marks = [90, 25, 67, 45, 80]   # 학생들의 시험 점수 리스트

number = 0   # 학생에게 붙여 줄 번호
for mark in marks:   # 90, 25, 67, 45, 80을 순서대로 mark에 대입
    number = number +1 # 0번학생은 이상하니까 1번학생을 만들어주기위해 넣음
    if mark >= 60: 
        print("%d번 학생은 합격입니다." % number)
    else: 
        print("%d번 학생은 불합격입니다." % number)


1번 학생은 합격입니다.
2번 학생은 불합격입니다.
3번 학생은 합격입니다.
4번 학생은 불합격입니다.
5번 학생은 합격입니다.


# for 문과 continue 문


# while 문에서 살펴본 continue 문을 for 문에서도 사용할 수 있다. 즉, for 문 안의 문장을 수행하는 도중 continue 문을 만나면 for 문의 처음으로 돌아가게 된다.

# 앞에서 for 문 응용 예제를 그대로 사용해서 60점 이상인 사람에게는 축하 메시지를 보내고 나머지 사람에게는 아무런 메시지도 전하지 않는 프로그램을 IDLE 에디터로 작성해 보자.

# marks2.py
marks = [90, 25, 67, 45, 80]

number = 0 
for mark in marks: 
    number = number +1 
    if mark < 60:
        continue 
    print("%d번 학생 축하합니다. 합격입니다. " % number)


1번 학생 축하합니다. 합격입니다.
3번 학생 축하합니다. 합격입니다.
5번 학생 축하합니다. 합격입니다.



# for 문과 함께 자주 사용하는 range 함수

a = range(10)
a
range(0, 10)

# range(10)은 0부터 10 미만의 숫자를 포함하는 range 객체를 만들어 준다.
# 시작 숫자와 끝 숫자를 지정하려면 range(시작_숫자, 끝_숫자) 형태를 사용하는데, 이때 끝 숫자는 포함되지 않는다.

a = range(1, 11)
a
range(1, 11)


# range 함수의 예시 살펴보기

add = 0 
for i in range(1, 11): 
    add = add + i 

print(add)
55

# range(1, 11)은 숫자 1부터 10까지(1 이상 11 미만)의 숫자를 데이터로 가지는 객체이다. 따라서 위 예에서 i 변수에 숫자가 1부터 10까지 하나씩 차례로 대입되면서 add = add + i 문장을 반복적으로 수행하고 add는 최종적으로 55가 된다.

# 또한 우리가 앞에서 살펴본 합격 축하 문장을 출력하는 예제도 range 함수를 사용해서 다음과 같이 바꿀 수 있다.


# marks3.py
marks = [90, 25, 67, 45, 80]
for number in range(len(marks)):
    if marks[number] < 60: 
        continue
    print("%d번 학생 축하합니다. 합격입니다." % (number+1))

# len는 리스트 안의 요소 개수를 리턴하는 함수이다. 따라서 len(marks)는 5, range(len(marks))는 range(5)가 될 것이다. number 변수에는 차례로 0부터 4까지의 숫자가 대입되고 marks[number]는 차례대로 90, 25, 67, 45, 80 값을 가지게 된다. 결과는 marks2.py 예제와 동일하다.


# for와 range를 이용한 구구단
for i in range(2,10):        # 1번 for문
    for j in range(1, 10):   # 2번 for문
        print(i*j, 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


# 그다지 중요하지 않음 !
# 리스트 컴프리헨션 사용하기

a = [1,2,3,4]
result = []
for num in a:
    result.append(num*3)

print(result)
[3, 6, 9, 12]


a = [1,2,3,4]
result = [num * 3 for num in a]
print(result)
[3, 6, 9, 12]

a = [1,2,3,4]
result = [num * 3 for num in a if num % 2 == 0]
print(result)
[6, 12]

result = []
for num in a:
    if num % 2 == 0:
        result.append(num*3)

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

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

    for 항목2 in 반복_가능_객체2 if 조건문2
    ...
    for 항목n in 반복_가능_객체n if 조건문n]


result = [x*y for x in range(2,10) for y in range(1,10)]
print(result)
[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 x in range(2,10):
    for y in range(1,10):
        result.append(x*y)

print(result)

반응형

+ Recent posts