[ic]for 문[/ic]과 [ic]else 구문[/ic]이 결합된 요상한 구문에 대해 알아보자.
1) [ic]for-else[/ic] 구문 생김새
numbers = [1, 3, 5]
for number in numbers:
print(number)
else:
print("반복문 끝")
# output
'''
1
3
5
반복문 끝
'''
[ic]for loop[/ic] 뒤에 [ic]else 문[/ic]을 붙여준다.
이때 [ic]else[/ic]는 [ic]for[/ic]과 같은 위치 선상이어야 한다.
작동방식은[ic]for[/ic] 문을 다 돌고 난 뒤 [ic]else[/ic] 구문내 코드를 실행시키는 구조다.
여기서 궁금증이 생긴다.
왜 굳이..?
numbers = [1, 3, 5]
for number in numbers:
print(number)
print("반복문 끝")
[ic]else[/ic]를 안 써도 결과는 똑같기 때문이다.
하지만 [ic]for else[/ic] 문 장점은 [ic]break[/ic]와 함께 쓸 때 발휘된다.
2) [ic]for-else[/ic] with [ic] break[/ic]
numbers = [1, 3, 5]
for number in numbers:
if number == 3:
break
else:
print("반복문 끝")
리스트 원소중 [ic]3[/ic]이라는 값이 있으면 [ic]break문[/ic]에 걸려 break 되는 코드다.
결과적으로 [ic]else 문[/ic] 코드는 실행되지 않는다.
[ic]else 문[/ic]이 없다면?
numbers = [1, 3, 5]
for number in numbers:
if number == 3:
break
print("반복문 끝")
# else가 없다면 break 가 있던 없던 마지막 문 을 실행한다.
#ouput
'''
반복문 끝
'''
[ic]for loop[/ic]안에서 break에 걸려도 [ic]print("반복문 끝")[/ic] 은 실행된다.
이제 왜 [ic]for-else[/ic] 가 강력한지 납득이 되었을 거다.
그렇다면 이러한 기능을 어디에 쓰는지 응용코드를 통해 확인해 보자.
3) 응용 코드
리스트 안에서 특정 원소 존재여부를 확인하는 코드다.
존재여부에 따라 다른 ouput을 출력한다.
def search_list(element, search_list):
for item in search_list:
if item == element:
print(f"Found element {element} in list")
break
else:
print(f"Could not find element {element} in list")
search_list(5, [1, 2, 3, 4])
# Output: Could not find element 5 in list
search_list(3, [1, 2, 3, 4])
# Output: Found element 3 in list
'파이썬 > 파이썬 기초' 카테고리의 다른 글
구글 코랩에서 활용하는 마크다운 문법 마스터하기 (1) | 2023.11.06 |
---|---|
코랩(colab) 깃허브 업로드 방법(잘 안되는분) (0) | 2022.10.27 |
[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) (1) | 2022.10.14 |
[파이썬 기초] windows 파이썬 가상환경 설정 방법 배우기 (0) | 2022.10.06 |
[python] math.hypot() 란? | 사용법 (0) | 2022.08.26 |
댓글