Python 조건문과 함수
이 토픽을 마치면
if/elif/else로 분기를 만들고, def로 함수를 정의해서 코드를 재사용할 수 있습니다.
조건문 — if, elif, else
프로그램은 "상황에 따라 다르게 행동"해야 합니다. 그것이 조건문입니다.
python
score = 85
if score >= 90: print("A등급")elif score >= 80: print("B등급")elif score >= 70: print("C등급")else: print("재시험")
# 출력: B등급위에서부터 순서대로 조건을 검사합니다. 첫 번째로 True인 블록을 실행하고 나머지는 건너뜁니다.
들여쓰기가 문법이다
python
# ✅ 올바름if True: print("실행됨")
# ❌ IndentationErrorif True:print("에러!")Python은 중괄호 대신 **들여쓰기(보통 스페이스 4칸)**로 블록을 구분합니다. 들여쓰기가 맞지 않으면 문법 에러입니다. 탭과 스페이스를 섞으면 안 됩니다.
비교와 논리 연산자
python
# 비교 연산자x = 10print(x > 5) # Trueprint(x == 10) # True (같은가)print(x != 10) # False (다른가)print(x >= 10) # True (이상)
# 논리 연산자age = 25has_id = True
if age >= 18 and has_id: print("입장 가능")
if age < 18 or not has_id: print("입장 불가")| 연산자 | 의미 | 예시 |
|---|---|---|
and | 둘 다 True | A and B |
or | 하나라도 True | A or B |
not | 반전 | not A |
함수 — def
같은 코드를 여러 번 쓰는 대신, 함수로 묶어서 이름을 붙입니다.
python
def greet(name): print(f"안녕하세요, {name}님!")
greet("김훈") # 안녕하세요, 김훈님!greet("이수") # 안녕하세요, 이수님!def 함수이름(매개변수): → 들여쓰기된 블록이 함수 본문. 함수는 호출할 때까지 실행되지 않습니다.
return — 결과 돌려주기
python
def add(a, b): return a + b
result = add(3, 5)print(result) # 8
# return이 없으면 None을 반환def say_hello(): print("hello")
x = say_hello() # "hello" 출력print(x) # Noneprint()는 화면에 보여주는 것이고, return은 값을 돌려주는 것입니다. 전혀 다른 역할입니다.
기본값과 키워드 인자
python
def power(base, exponent=2): return base ** exponent
print(power(3)) # 9 (exponent=2 기본값 사용)print(power(3, 3)) # 27 (exponent=3으로 지정)
# 키워드 인자 — 순서 무관print(power(exponent=4, base=2)) # 16기본값이 있는 매개변수는 호출할 때 생략할 수 있습니다.
함수 안의 변수 — 스코프
python
x = 10 # 전역 변수
def foo(): x = 20 # 지역 변수 — 함수 안에서만 유효 print(x) # 20
foo()print(x) # 10 — 전역 x는 변하지 않았다함수 안에서 만든 변수는 함수가 끝나면 사라집니다. 함수 밖의 변수와 이름이 같아도 별개의 변수입니다. 이것을 **스코프(scope)**라고 합니다.
조건문 + 함수 = 로직
python
def classify_bmi(weight, height): bmi = weight / (height ** 2)
if bmi < 18.5: return "저체중" elif bmi < 25: return "정상" elif bmi < 30: return "과체중" else: return "비만"
print(classify_bmi(70, 1.75)) # 정상print(classify_bmi(90, 1.70)) # 과체중조건문으로 분기하고, 함수로 재사용 가능하게 만드는 것. 이 두 가지를 합치면 대부분의 프로그램 로직을 표현할 수 있습니다.