프로그래밍/파이썬

파이썬 Python for else 문

에이티에스 2023. 6. 23. 14:59
728x90

Python for else 문 소개

Python에서 for else문에는 선택적 절이 있을 수 있으며, 특히 Java 또는 C#과 같은 다른 언어에서 사용하는 경우 익숙하지 않을 수 있습니다.

다음은 else절이 있는 for 문의 구문을 보여줍니다.

for item in iterables:
    # process item 
else:
    # statementCode language: PHP (php)

이 구문에서 else절은 루프가 정상적으로 실행되는 경우에만 실행됩니다. 즉, 루프가 break문을 만나면 else절이 실행되지 않습니다.

또한 else 절은 반복 가능 개체에 항목이 없을 때도 실행됩니다.
다음 흐름도는 for…else 문을 보여줍니다:

else 절은 효과적으로 적용하는 방법을 알고 있는 경우에 매우 유용합니다.

 

Python for else 문 예제

각 사람이 다음과 같이 name과 age구성된 dictionary인 사람 목록이 있다고 가정해 보겠습니다.

people = [{'name': 'John', 'age': 25},
        {'name': 'Jane', 'age': 22},
        {'name': 'Peter', 'age': 30},
        {'name': 'Jenifer', 'age': 28}]Code language: JavaScript (javascript)

그리고 이름으로 사람을 검색하고 싶습니다.

목록에 해당 사용자가 포함되어 있는 경우 해당 사용자의 정보를 표시할 수 있습니다. 그렇지 않으면 이름을 찾을 수 없다는 메시지를 표시하려고 합니다.

이를 위해 다음과 같은 프로그램을 만들 수 있습니다.

people = [{'name': 'John', 'age': 25},
        {'name': 'Jane', 'age': 22},
        {'name': 'Peter', 'age': 30},
        {'name': 'Jenifer', 'age': 28}]

name = input('Enter a name:')

found = False
for person in people:
    if person['name'] == name:
        found = True
        print(person)
        break

if not found:
    print(f'{name} not found!')
Code language: PHP (php)

작동 원리 :

  • 먼저 input()함수를 사용하여 이름을 묻는 메시지를 표시합니다.input()
  • 그런 다음 플래그(found)를 False로 설정합니다. 입력 이름이 목록에 있는 사람과 일치하는 경우 해당 값을 True로 설정하고 해당 사람의 정보를 표시한 break문을 사용하여 루프를 종료합니다.
  • 마지막으로 found 플래그를 확인하고 메시지를 표시합니다.

다음은 이름이 Peter 및 Maria인 프로그램을 실행합니다.

1차 실행:

Enter a name:Peter
{'name': 'Peter', 'age': 30}Code language: Shell Session (shell)

2차 실행:

Enter a name:Maria
Maria not found!Code language: Shell Session (shell)

 

그러나 for else명령문을 사용하면 프로그램이 훨씬 짧아집니다.

다음은 for else명령문을 사용하는 프로그램의 새 버전을 보여 줍니다.

people = [{'name': 'John', 'age': 25},
        {'name': 'Jane', 'age': 22},
        {'name': 'Peter', 'age': 30},
        {'name': 'Jenifer', 'age': 28}]

name = input('Enter a name:')

for person in people:
    if person['name'] == name:
        print(person)
        break
else:
    print(f'{name} not found!')Code language: PHP (php)

for else명령문을 사용하면 프로그램에서 루프 뒤에 if문과 flag를 사용할 필요가 없습니다.

이 새 프로그램에서는 입력 이름이 목록에 있는 사람과 일치하면 해당 사람의 정보가 표시되고 break문을 사용하여 루프를 종료합니다.

루프가 break문을 만나면 else절이 실행되지 않습니다.

요약

  • 루프에 브레이크 문이 없거나 반복 가능한 개체에 항목이 없는 경우 코드 블록을 실행하려면 Python for else 문을 사용합니다.
728x90
반응형
그리드형