반응형
Notice
Recent Posts
«   2024/12   »
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
Today
Total
관리 메뉴

오식랜드

[python] 반복문 for문 본문

dev-log/python

[python] 반복문 for문

개발하는 오식이 2023. 1. 4. 21:05
반응형

문법

for 변수 in 반복대상:
    실행 명령문1
    실행 명령문2

반복대상에는 리스트나 세트를 넣어줍니다.

num_list = [0, 1, 2, 3, 4]
num_set = {0, 1, 2, 3, 4}

for n in num_list:
    print("LIST : {0}".format(n)) # {0} 위치에는 n의 값이 들어가요

for n in num_list:
    print("SET : {0}".format(n)) # {0} 위치에는 n의 값이 들어가요

만약 대기번호를 배부하는 프로그램에서 리스트 또는 세트에 1~ 100까지 다 적어놓고 돌릴 수는 없다.

그럴 땐 우리가 초반에 배운 range를 사용해서 for문을 실행시키면 된다

for n in range(1, 101): # 1부터 101직전까지 (1~100)
    print("대기번호 : {0}".format(n))

continue

continue 는 더 이상 명령들을 실행하지 않고 다음 반복대상으로 넘어갈 때 사용한다

예를 들어서, 고등학교에서 선생님이 학생들에게 책을 읽힌다고 가정하겠습니다.

출석번호 1번부터 10번까지 총 10명의 학생들이 있고 순서대로 한 문단씩 책을 읽는데 2번과 5번 학생들이 결석을 했다고 합니다.

결석한 학생은 교실에 없으니 책을 읽지 못하겠죠?

그럴 때 for문 안에 if문을 사용하게 됩니다.

그리고 if문의 조건으로는 for문이 돌며 닿은 출석번호가 결석자 리스트 안에 포함되어있는지 판별하게 합니다.

absent = [2, 5] # 결석한 학생 출석번호

for student in range(1, 11): # 출석번호 1~10번
    if student in absent: # 결석했으면 책을 읽지 않고 다음 학생으로 넘어가기
        continue
    print("{0}, 책을 읽어봐".format(student))

결석자 포함이면 print를 하지 않고 다음 번호로 넘어가게 됩니다.

break

위의 예시에서 더 추가해보도록 하겠습니다.

2명의 결석 학생들을 제외한 학생들이 순서대로 열심히 책을 읽습니다.

그런데 저런, 7번 학생은 깜빡하고 책을 가져오지 않았다고 하네요.

하필이면 이 선생님은 다른 모든 것은 용서해도 학생이 책을 가져오지 않을 때에는 호랑이처럼 돌변하는 아주 무시무시한 분이라고 합니다.

얼마나 무섭냐면, 수업시간이 아직 끝나지도 않았는데 바로 수업을 끝내고 학생을 교무실로 데려간다네요.

absent = [2, 5] # 결석한 학생 출석번호
no_book = [7] # 책을 가져오지 않은 학생 출석번호

for student in range(1, 11): # 출석번호 1~10번
    if student in absent: # 결석했으면 책을 읽지 않고 다음 학생으로 넘어가기
        continue
    elif student in no_book: # 책을 가져오지 않았으면 바로 수업 종료 (반복문 탈출)
        print("오늘 수업 여기까지. {0}는 교무실로 따라와".format(student))
        break
    print("{0}, 책을 읽어봐".format(student))

이렇게 하면 책이 없는 7번에 도달했을 때, break문을 통해서 for문이 정지됩니다.

한줄 for문

반복 대상 항목을 하나씩 순회하면서 변수에 저장하고 그 변수를 사용자가 원하는 동작을 수행하는 방식이며 생김새는 이렇습니다.

[변수로 어떤 동작 for 변수 in 반복대상]

예를 들어서 학교에서는 출석번호가 1, 2, 3, 4, 5, ... 이렇게 되어 있었는데 새학기부터는 각 번호에 100을 더한 형태로, 즉, 101, 102, 103, 104, 105, ... 이렇게 바뀐다고 합니다.

우선 리스트에 5개의 출석번호 [1, 2, 3, 4, 5] 를 저장한 상태에서 한 줄 for 를 이용하여 변형을 해보겠습니다.

students = [1, 2, 3, 4, 5]
print(students) # [1, 2, 3, 4, 5]

# 한 줄 for 를 이용하여 각 항목에 100 을 더함
students = [i + 100 for i in students]
print(students) # [101, 102, 103, 104, 105]

조금 더 풀어서 적어보면 다음 문장과 같은 동작을 합니다.

students = [students[0] + 100, students[1] + 100, students[2] + 100, students[3] + 100, students[4] + 100]

다른 예제를 들어보겠습니다.

이번에는 이름이 저장된 리스트가 있는데 한 줄 for 를 이용하여 각 이름의 길이 정보를 가지는 리스트로 변형해보겠습니다.

students = ["Iron man", "Thor", "I am groot"]
print(students) # ["Iron man", "Thor", "I am groot"]

# 한 줄 for 를 이용하여 각 이름의 길이 정보로 변환
students = [len(i) for i in students]
print(students) # [8, 4, 10]

띄어쓰기를 포함한 각 이름의 길이는 "Iron man" 은 8, "Thor" 는 4, "I am groot" 는 10이며 이 값들이 새로운 리스트로 만들어졌습니다

위 코드를 풀어서 적어보면 이렇게 되겠네요.

students = [len(students[0]), len(students[1]), len(students[2])]

예제를 하나만 더 들어보겠습니다.

이름 정보를 가지는 동일한 리스트를 사용하되, 각 이름을 모두 대문자로 바꿔보겠습니다.

students = ["Iron man", "Thor", "I am groot"]
print(students) # ["Iron man", "Thor", "I am groot"]

# 한 줄 for 를 이용하여 각 이름을 대문자로 변경
students = [i.upper() for i in students]
print(students) # ['IRON MAN', 'THOR', 'I AM GROOT']

 

 

출처 : https://nadocoding.tistory.com/

반응형

'dev-log > python' 카테고리의 다른 글

[python] 함수  (0) 2023.01.09
[python] 반복문 while문  (0) 2023.01.04
[python] 조건문  (0) 2023.01.04
[python] list와 set 데이터타입 변경  (0) 2023.01.04
[python] 집합 set  (0) 2023.01.04
Comments