Python 제어 흐름
Python 제어 흐름
제어 흐름은 개별 명령문, 지침 또는 함수 호출이 실행되거나 평가되는 순서입니다. Python 프로그램의 제어 흐름은 조건문, 루프 및 함수 호출에 의해 규제됩니다.
비교 연산자
| 연산자 | 의미 |
|---|---|
== | 같다 |
!= | 같지 않다 |
< | 보다 작다 |
> | 보다 크다 |
<= | 작거나 같다 |
>= | 크거나 같다 |
이 연산자들은 주어진 값에 따라 True 또는 False 로 평가됩니다.
예시:
42 == 42
True
40 == 42
False
'hello' == 'hello'
True
'hello' == 'Hello'
False
'dog' != 'cat'
True
42 == 42.0
True
42 == '42'
False
로그인하여 이 퀴즈에 답하고 학습 진행 상황을 추적하세요
'hello' == 'Hello'는 무엇으로 평가됩니까?TrueFalseNone불리언 연산자
세 가지 불리언 연산자가 있습니다: and, or, not. 우선순위는 높음에서 낮음 순으로 not, and, or입니다.
and 연산자의 진리표:
| 표현식 | 평가 결과 |
|---|---|
True and True | True |
True and False | False |
False and True | False |
False and False | False |
or 연산자의 진리표:
| 표현식 | 평가 결과 |
|---|---|
True or True | True |
True or False | True |
False or True | True |
False or False | False |
not 연산자의 진리표:
| 표현식 | 평가 결과 |
|---|---|
not True | False |
not False | True |
연산자 혼합 사용
불리언 연산자와 비교 연산자를 혼합할 수 있습니다:
(4 < 5) and (5 < 6)
True
(4 < 5) and (9 < 6)
False
(1 == 2) or (2 == 2)
True
또한, 비교 연산자와 함께 여러 불리언 연산자를 표현식에 사용할 수 있습니다:
2 + 2 == 4 and not 2 + 2 == 5 and 2 * 2 == 2 + 2
True
# 아래 문장에서 3 < 4 and 5 > 5 가 먼저 실행되어 False 로 평가됩니다.
# 그 다음 5 > 4 가 True 를 반환하므로 True or False 의 결과는 True 가 됩니다.
5 > 4 or 3 < 4 and 5 > 5
True
# 이제 괄호 안의 문장이 먼저 실행되어 True and False 가 False 를 반환합니다.
(5 > 4 or 3 < 4) and 5 > 5
False
if 문
if 문은 표현식을 평가하고, 그 표현식이 True이면 다음 들여쓰기된 코드를 실행합니다:
# if 문: 조건이 True 일 때 코드 블록 실행
name = 'Debora'
if name == 'Debora': # name 이 'Debora'와 같은지 확인
print('Hi, Debora') # 조건이 True 이면 이 줄이 실행됨
Hi, Debora
if name != 'George':
print('You are not George')
You are not George
else 문은 if와 모든 elif 표현식의 평가가 False일 때만 실행됩니다:
# if-else: 조건에 따라 다른 코드 실행
name = 'Debora'
if name == 'George':
print('Hi, George.')
else: # if 조건이 False 일 때 실행
print('You are not George')
You are not George
로그인하여 이 퀴즈에 답하고 학습 진행 상황을 추적하세요
else 블록은 언제 실행됩니까?if 조건 (및 존재하는 경우 모든 elif 조건) 이 False일 때만if 조건이 True일 때만if 문 표현식이 False인 경우에만 elif 문이 평가되고 실행됩니다:
# if-elif: 여러 조건을 순차적으로 확인
name = 'George'
if name == 'Debora':
print('Hi Debora!')
elif name == 'George': # 이전 조건이 False 일 때만 확인됨
print('Hi George!')
Hi George!
elif 및 else 부분은 선택 사항입니다.
name = 'Antony'
if name == 'Debora':
print('Hi Debora!')
elif name == 'George':
print('Hi George!')
else:
print('Who are you?')
Who are you?
삼항 조건 연산자
많은 프로그래밍 언어에는 조건부 표현식을 정의하는 삼항 연산자가 있습니다. 가장 일반적인 용도는 간결하고 간단한 조건부 할당 문장을 만드는 것입니다. 즉, 조건이 참이면 첫 번째 표현식을 평가하고 그렇지 않으면 두 번째 표현식을 평가하는 한 줄 코드를 제공합니다.
<표현식1> if <조건> else <표현식2>
예시:
age = 15
# 이 if 문:
if age < 18:
print('kid')
else:
print('adult')
kid
# 삼항 연산자: 한 줄 조건부 표현식
# 구문: 조건이 참일 때 값 if 조건 else 조건이 거짓일 때 값
print('kid' if age < 18 else 'adult')
kid
삼항 연산자는 연결할 수 있습니다:
age = 15
# 이 삼항 연산자:
print('kid' if age < 13 else 'teen' if age < 18 else 'adult')
teen
# 이 if 문과 동일합니다:
if age < 13:
print('kid')
else:
if age < 18:
print('teen')
else:
print('adult')
teen
Switch-Case 문
Switch-Case 문
컴퓨터 프로그래밍 언어에서 switch 문은 검색 및 매핑을 통해 프로그램 실행의 제어 흐름을 변경하는 데 사용되는 일종의 선택 제어 메커니즘입니다.
Switch-Case 문, 즉 구조적 패턴 매칭은 2020 년에 PEP 622를 통해 처음 도입되었으며, 2022 년 9 월 Python 3.10과 함께 공식적으로 출시되었습니다.
공식 튜토리얼
PEP 636은 Python 패턴 매칭 또는 Switch-Case 문에 대한 공식 튜토리얼을 제공합니다.
단일 값 매칭
response_code = 201
match response_code:
case 200:
print("OK")
case 201:
print("Created")
case 300:
print("Multiple Choices")
case 307:
print("Temporary Redirect")
case 404:
print("404 Not Found")
case 500:
print("Internal Server Error")
case 502:
print("502 Bad Gateway")
Created
or 패턴으로 매칭
이 예시에서 파이프 문자 (| 또는 or) 는 Python 이 두 개 이상의 케이스에 대해 동일한 응답을 반환하도록 허용합니다.
response_code = 502
match response_code:
case 200 | 201:
print("OK")
case 300 | 307:
print("Redirect")
case 400 | 401:
print("Bad Request")
case 500 | 502:
print("Internal Server Error")
Internal Server Error
이터러블 길이로 매칭
today_responses = [200, 300, 404, 500]
match today_responses:
case [a]:
print(f"One response today: {a}")
case [a, b]:
print(f"Two responses today: {a} and {b}")
case [a, b, *rest]:
print(f"All responses: {a}, {b}, {rest}")
All responses: 200, 300, [404, 500]
기본값
밑줄 기호 (_) 는 기본 케이스를 정의하는 데 사용됩니다:
response_code = 800
match response_code:
case 200 | 201:
print("OK")
case 300 | 307:
print("Redirect")
case 400 | 401:
print("Bad Request")
case 500 | 502:
print("Internal Server Error")
case _:
print("Invalid Code")
Invalid Code
내장 클래스 매칭
response_code = "300"
match response_code:
case int():
print('Code is a number')
case str():
print('Code is a string')
case _:
print('Code is neither a string nor a number')
Code is a string
Match-Case 문 가드
response_code = 300
match response_code:
case int() if response_code > 99 and response_code < 500:
print('Code is a valid number')
case _:
print('Code is an invalid number')
Code is a valid number
while 루프 문
while 문은 표현식이 True인 동안 반복 실행하는 데 사용됩니다:
# while 루프: 조건이 True 인 동안 코드 반복
spam = 0
while spam < 5: # spam 이 5 보다 작은 동안 계속
print('Hello, world.')
spam = spam + 1 # 무한 루프 방지를 위해 카운터 증가
Hello, world.
Hello, world.
Hello, world.
Hello, world.
Hello, world.
로그인하여 이 퀴즈에 답하고 학습 진행 상황을 추적하세요
while 루프는 무엇을 합니까?True인 동안 코드를 반복합니다break 문
실행이 break 문에 도달하면 즉시 while 루프의 절을 종료합니다:
# break 문: 발견되면 즉시 루프 종료
while True: # 무한 루프
name = input('Please type your name: ')
if name == 'your name':
break # 즉시 루프 종료
print('Thank you!')
Please type your name: your name
Thank you!
continue 문
프로그램 실행이 continue 문에 도달하면 프로그램 실행은 즉시 루프 시작 부분으로 점프합니다.
# continue 문: 현재 루프 반복의 나머지 부분을 건너뛰고 다음 반복 시작
while True:
name = input('Who are you? ')
if name != 'Joe':
continue # 다음 반복으로 건너뛰고 암호를 묻지 않음
password = input('Password? (It is a fish.): ')
if password == 'swordfish':
break # 암호가 올바르면 루프 종료
print('Access granted.')
Who are you? Charles
Who are you? Debora
Who are you? Joe
Password? (It is a fish.): swordfish
Access granted.
For 루프
for 루프는 list, tuple, dictionary, set 또는 string을 반복합니다:
# for 루프: 시퀀스의 각 항목 반복
pets = ['Bella', 'Milo', 'Loki']
for pet in pets: # 리스트의 각 애완동물에 대해 반복
print(pet) # 각 애완동물 이름 출력
Bella
Milo
Loki
로그인하여 이 퀴즈에 답하고 학습 진행 상황을 추적하세요
for 루프는 무엇을 반복합니까?range() 함수
range() 함수는 숫자 시퀀스를 반환합니다. 0 에서 시작하여 1 씩 증가하며 지정된 숫자 직전에서 멈춥니다:
for i in range(5):
print(f'Will stop at 5! or 4? ({i})')
Will stop at 5! or 4? (0)
Will stop at 5! or 4? (1)
Will stop at 5! or 4? (2)
Will stop at 5! or 4? (3)
Will stop at 5! or 4? (4)
로그인하여 이 퀴즈에 답하고 학습 진행 상황을 추적하세요
range(5)는 무엇을 생성합니까?range() 함수는 3 가지 기본 인수를 수정할 수도 있습니다. 처음 두 개는 start 및 stop 값이 되고 세 번째는 step 인수가 됩니다. step 은 각 반복 후 변수가 증가하는 양입니다.
# range(시작, 중지, 단계)
for i in range(0, 10, 2):
print(i)
0
2
4
6
8
step 인수에 음수를 사용하여 for 루프가 위로가 아닌 아래로 카운트하도록 할 수도 있습니다.
for i in range(5, -1, -1):
print(i)
5
4
3
2
1
0
For else 문
이는 루프 전체가 실행된 경우에 실행할 문을 지정할 수 있게 합니다. 루프 내에서 break 조건이 발생할 수 있는 경우에만 유용합니다:
for i in [1, 2, 3, 4, 5]:
if i == 3:
break
else:
print("only executed when no item is equal to 3")
sys.exit() 로 프로그램 종료
exit() 함수는 Python 을 종료할 수 있게 합니다.
import sys
while True:
feedback = input('Type exit to exit: ')
if feedback == 'exit':
print(f'You typed {feedback}.')
sys.exit()
Type exit to exit: open
Type exit to exit: close
Type exit to exit: exit
You typed exit.