Python 에서 루프가 완료되었는지 확인하는 방법

PythonBeginner
지금 연습하기

소개

이 랩에서는 Python 에서 루프가 완료되었는지 확인하는 방법을 배우게 됩니다. 이는 for 루프가 어떻게 실행되는지 이해하고 루프 완료를 추적하는 다양한 기술을 탐구하는 것을 포함합니다.

먼저 과일 목록을 반복하고 각 과일을 출력하는 기본적인 for 루프 예제를 살펴봅니다. 그런 다음, 플래그 변수를 사용하여 루프의 진행 상황을 모니터링하는 방법을 배우고, 마지막으로 루프가 정상적으로 종료된 후에만 코드를 실행하기 위해 루프와 함께 else 절을 활용하는 방법을 배우게 됩니다.

루프 실행 방식 배우기

이 단계에서는 Python 에서 for 루프가 어떻게 실행되는지 배우게 됩니다. 루프는 여러 번의 코드 블록 반복을 허용하는 기본적인 프로그래밍 구조입니다. 루프의 작동 방식을 이해하는 것은 효율적이고 효과적인 프로그램을 작성하는 데 매우 중요합니다.

간단한 예시부터 시작해 보겠습니다. VS Code 편집기를 사용하여 ~/project 디렉토리에 loop_example.py라는 파일을 만듭니다.

## loop_example.py
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

이 코드는 과일 목록을 반복하고 각 과일을 콘솔에 출력합니다.

이 스크립트를 실행하려면 VS Code 에서 터미널을 열고 다음 명령을 실행합니다.

python loop_example.py

다음과 같은 출력을 볼 수 있습니다.

apple
banana
cherry

코드에서 무슨 일이 일어나는지 자세히 살펴보겠습니다.

  1. fruits = ["apple", "banana", "cherry"]: 이 줄은 "apple", "banana", "cherry"의 세 문자열을 포함하는 fruits라는 목록을 만듭니다.
  2. for fruit in fruits:: 이 줄은 for 루프를 시작합니다. 루프는 fruits 목록의 각 요소를 반복합니다. 각 반복에서 현재 요소는 변수 fruit에 할당됩니다.
  3. print(fruit): 이 줄은 루프 내부에 있습니다. fruit 변수의 값을 콘솔에 출력합니다.

루프는 목록의 각 과일에 대해 한 번씩 총 세 번 실행됩니다. 첫 번째 반복에서 fruit는 "apple"이므로 "apple"이 출력됩니다. 두 번째 반복에서 fruit는 "banana"이므로 "banana"가 출력됩니다. 세 번째 반복에서 fruit는 "cherry"이므로 "cherry"가 출력됩니다.

이제 각 과일의 인덱스를 포함하도록 스크립트를 수정해 보겠습니다. 다음과 같이 loop_example.py 파일을 수정합니다.

## loop_example.py
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
    print(f"Index: {index}, Fruit: {fruit}")

이 수정된 코드에서는 enumerate() 함수를 사용하여 목록의 각 요소의 인덱스와 값을 모두 가져옵니다.

스크립트를 다시 실행합니다.

python loop_example.py

다음과 같은 출력을 볼 수 있습니다.

Index: 0, Fruit: apple
Index: 1, Fruit: banana
Index: 2, Fruit: cherry

enumerate() 함수는 (인덱스, 요소) 쌍의 시퀀스를 반환합니다. 각 반복에서 인덱스는 변수 index에 할당되고 요소는 변수 fruit에 할당됩니다.

루프가 어떻게 실행되는지 이해하는 것은 데이터 모음을 처리할 수 있는 프로그램을 작성하는 데 필수적입니다. 다음 단계에서는 루프 실행을 제어하는 ​​더욱 고급 기술을 배우게 됩니다.

완료 여부를 추적하기 위한 플래그 변수 설정

이 단계에서는 루프 내에서 작업의 완료를 추적하기 위해 플래그 변수를 사용하는 방법을 배우게 됩니다. 플래그 변수는 특정 조건이 충족되었는지 여부를 나타내는 부울 변수 (True 또는 False) 입니다. 이는 프로그램의 흐름을 제어하는 일반적인 기술입니다.

목록에서 특정 숫자를 검색하고 찾자마자 루프를 중지하려는 시나리오를 생각해 보겠습니다. VS Code 편집기를 사용하여 ~/project 디렉토리에 flag_example.py라는 파일을 만듭니다.

## flag_example.py
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 5
found = False  ## Initialize the flag variable

for number in numbers:
    print(f"Checking number: {number}")
    if number == target:
        found = True
        print(f"Found the target: {target}")
        break  ## Exit the loop

if found:
    print("Target found in the list.")
else:
    print("Target not found in the list.")

이 코드에서는 found라는 플래그 변수를 False로 초기화합니다. 루프는 numbers 목록을 반복합니다. 현재 숫자가 target과 같으면 foundTrue로 설정하고 메시지를 출력한 다음 break 문을 사용하여 루프를 종료합니다. 루프 후 found의 값을 확인합니다. True이면 대상이 발견되었음을 나타내는 메시지를 출력합니다. 그렇지 않으면 대상이 발견되지 않았음을 나타내는 메시지를 출력합니다.

이 스크립트를 실행하려면 VS Code 에서 터미널을 열고 다음 명령을 실행합니다.

python flag_example.py

다음과 같은 출력을 볼 수 있습니다.

Checking number: 1
Checking number: 2
Checking number: 3
Checking number: 4
Checking number: 5
Found the target: 5
Target found in the list.

대상 숫자 (5) 를 찾자마자 루프가 중지되는 것을 확인하십시오. break 문은 루프를 종료하여 추가 반복을 방지합니다.

이제 목록에 없는 숫자를 검색하도록 스크립트를 수정해 보겠습니다. target 변수를 15 로 변경합니다.

## flag_example.py
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 15
found = False  ## Initialize the flag variable

for number in numbers:
    print(f"Checking number: {number}")
    if number == target:
        found = True
        print(f"Found the target: {target}")
        break  ## Exit the loop

if found:
    print("Target found in the list.")
else:
    print("Target not found in the list.")

스크립트를 다시 실행합니다.

python flag_example.py

다음과 같은 출력을 볼 수 있습니다.

Checking number: 1
Checking number: 2
Checking number: 3
Checking number: 4
Checking number: 5
Checking number: 6
Checking number: 7
Checking number: 8
Checking number: 9
Checking number: 10
Target not found in the list.

이 경우 루프는 대상 숫자를 찾지 않고 전체 목록을 반복합니다. found 변수는 False로 유지되고 "Target not found in the list." 메시지가 출력됩니다.

플래그 변수를 사용하는 것은 루프 내에서 작업의 완료를 추적하는 간단하고 효과적인 방법입니다. 이 기술은 목록에서 요소를 검색하거나, 사용자 입력을 검증하거나, 파일에서 데이터를 처리하는 등 다양한 시나리오에서 유용합니다.

루프와 함께 else 절 사용하기

이 단계에서는 Python 에서 for 루프와 함께 else 절을 사용하는 방법을 배우게 됩니다. for 루프의 else 절은 루프가 정상적으로 완료될 때, 즉 break 문에 의해 루프가 종료되지 않을 때 실행됩니다. 이는 특정 요소를 찾지 못하거나 오류가 발생하지 않고 루프가 완료된 경우에만 수행해야 하는 작업을 수행하는 데 유용할 수 있습니다.

이전 단계에서 목록에서 대상 숫자를 검색했던 예제를 다시 살펴보겠습니다. 대상 숫자를 찾을 수 없는 경우 else 절을 사용하여 메시지를 출력할 수 있습니다. VS Code 편집기를 사용하여 ~/project 디렉토리에 else_example.py라는 파일을 만듭니다.

## else_example.py
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 15

for number in numbers:
    print(f"Checking number: {number}")
    if number == target:
        print(f"Found the target: {target}")
        break
else:
    print("Target not found in the list.")

이 코드에서 else 절은 for 루프와 연결됩니다. 루프가 target을 찾지 못하고 완료되면 (즉, break 문이 실행되지 않음), else 절 내부의 코드가 실행됩니다.

이 스크립트를 실행하려면 VS Code 에서 터미널을 열고 다음 명령을 실행합니다.

python else_example.py

다음과 같은 출력을 볼 수 있습니다.

Checking number: 1
Checking number: 2
Checking number: 3
Checking number: 4
Checking number: 5
Checking number: 6
Checking number: 7
Checking number: 8
Checking number: 9
Checking number: 10
Target not found in the list.

target(15) 이 numbers 목록에 없으므로 루프가 정상적으로 완료되고 else 절이 실행되어 "Target not found in the list." 메시지가 출력됩니다.

이제 목록에 대상 숫자를 포함하도록 스크립트를 수정해 보겠습니다. target 변수를 5 로 변경합니다.

## else_example.py
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 5

for number in numbers:
    print(f"Checking number: {number}")
    if number == target:
        print(f"Found the target: {target}")
        break
else:
    print("Target not found in the list.")

스크립트를 다시 실행합니다.

python else_example.py

다음과 같은 출력을 볼 수 있습니다.

Checking number: 1
Checking number: 2
Checking number: 3
Checking number: 4
Checking number: 5
Found the target: 5

이 경우 target(5) 을 찾으면 break 문에 의해 루프가 종료됩니다. 따라서 else 절은 실행되지 않습니다.

for 루프의 else 절은 break 문에 의해 중단되지 않고 루프가 정상적으로 완료될 때 코드를 실행하는 간결한 방법을 제공합니다. 이는 루프 실행 중에 특정 조건이 충족되지 않는 경우에만 특정 작업을 수행해야 하는 경우를 처리하는 데 유용할 수 있습니다.

요약

이 랩에서는 과일 목록을 반복하고 각 과일과 해당 인덱스를 함께 출력하여 Python 에서 for 루프가 어떻게 실행되는지 배웠습니다. 이 랩에서는 반복 중에 목록의 각 요소의 인덱스와 값에 모두 액세스하기 위해 enumerate() 함수를 사용하는 것을 포함하여 for 루프의 기본 구조를 보여주었습니다.

초기 예제에서는 과일 목록을 반복하고 각 과일을 출력했습니다. 후속 수정에서는 enumerate()를 사용하여 인덱스와 과일을 모두 출력하여 루프 내에서 요소의 위치와 값에 모두 액세스하는 방법을 보여주었습니다.