4주차 — 조건문
조건에 따라 다른 코드를 실행시키는 if/elif/else, 들여쓰기 규칙(4칸 공백), 중첩 조건문, 삼항 표현식, 그리고 진리값(Truthy/Falsy) 개념을 익힙니다.
이 강의에서 배우는 것
- 1if, elif, else 의 흐름을 이해한다
- 2들여쓰기(indentation) 규칙을 지킨다
- 3중첩 조건문을 사용한다
- 4진리값(Truthy / Falsy)의 개념을 안다
1. if 문
조건이 True일 때만 들여쓰기 된 블록이 실행됩니다.
score = 85
if score >= 60:
print("합격!")들여쓰기는 4칸 공백 이 표준. VS Code는 Tab을 4칸으로 자동 변환.
2. if-else
score = 50
if score >= 60:
print("합격")
else:
print("불합격")3. if-elif-else
여러 조건을 순서대로 검사. 처음으로 True 인 분기만 실행되고 나머지는 건너뜀.
score = 85
if score >= 90:
print("A")
elif score >= 80:
print("B")
elif score >= 70:
print("C")
else:
print("F")4. 중첩 조건문
조건문 안에 조건문. 너무 깊어지면 가독성 떨어지므로 2~3단계까지만.
age = 17
if age >= 18:
if age >= 65:
print("경로 우대")
else:
print("성인")
else:
print("미성년자")5. 조건 표현식 (삼항 연산자)
한 줄로 분기를 처리. 간단한 경우에만 사용.
n = 7
result = "짝수" if n % 2 == 0 else "홀수"
print(result) # 홀수6. 진리값(Truthy / Falsy)
if 조건: 에서 0, "", [], None, False 는 모두 거짓 처리됩니다.
if "":
print("실행 안 됨")
if 0:
print("실행 안 됨")
if "hello":
print("실행됨")7. 자주 하는 실수
1) 들여쓰기를 빠뜨리거나 섞음
if x > 0:
print("양수") # IndentationError→ 반드시 들여쓰기. 탭과 공백을 섞어 쓰면 보이지 않는 오류.
2) == 대신 =
if x = 5: # SyntaxError
if x == 5: # 정상3) elif 대신 else if
파이썬은 elif 만 지원합니다. (Java/C 의 else if 와 다름)
4) 모든 분기에 if 만 사용
if score >= 90: # A
print("A")
if score >= 80: # 80~89면 A, B 둘 다 출력됨!
print("B")→ 배타적 분기는 elif 사용.
8. FAQ
Q1. 조건이 여러 개 묶이는 경우는?
and, or 사용. if 0 < x < 100: 같은 연쇄 비교도 가능 (파이썬 특유).
Q2. elif 가 몇 개까지 가능한가요?
제한 없음. 다만 5개 이상 길어지면 딕셔너리 매핑 등 다른 구조를 고려.
Q3. switch-case 문은 없나요?
Python 3.10+ 부터 match-case 가 추가됐습니다. 입문 단계에서는 if/elif 로 충분.
💻 예제 (examples)
실제로 실행해 결과를 확인할 수 있는 예제 코드입니다.
score = int(input("점수: "))
if score >= 60:
print("합격!")
else:
print("불합격...")
점수: 75
합격!score = int(input("점수: "))
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
elif score >= 60:
grade = "D"
else:
grade = "F"
print(f"학점: {grade}")
점수: 85
학점: Bage = int(input("나이: "))
has_ticket = input("티켓 있음(y/n): ") == "y"
if age >= 18:
if has_ticket:
print("입장 가능")
else:
print("티켓을 구매하세요")
else:
print("미성년자는 입장 불가")
나이: 25
티켓 있음(y/n): y
입장 가능# 0, "", [], None, False는 모두 거짓 처리
values = [0, "", [], None, False, 1, "hi", [1, 2], True]
for v in values:
if v:
print(f"{v!r:>10}: Truthy")
else:
print(f"{v!r:>10}: Falsy")
0: Falsy
'': Falsy
[]: Falsy
None: Falsy
False: Falsy
1: Truthy
'hi': Truthy
[1, 2]: Truthy
True: Truthy📝 과제 (exercises)
직접 풀어보고, 막힐 때 정답을 펼쳐 비교해보세요.
학점 계산기
목표: 점수를 입력받아 학점(A/B/C/D/F)을 출력한다.
- input() 으로 점수 입력 (0~100)
- if/elif/else 로 학점 판정 (A: 90+, B: 80+, C: 70+, D: 60+, F: 그 외)
- 결과 출력
점수: 85
학점: B▶정답 코드 펼치기 / 접기
score = int(input("점수: "))
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
elif score >= 60:
grade = "D"
else:
grade = "F"
print(f"학점: {grade}")
점수: 85
학점: B윤년 판별기
목표: 연도를 입력받아 윤년인지 판별한다.
- input() 으로 연도 입력
- 윤년 규칙: 4의 배수 + (100의 배수가 아니거나 400의 배수)
- 결과 출력
조건: (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)
연도: 2024
2024은 윤년입니다.▶정답 코드 펼치기 / 접기
year = int(input("연도: "))
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print(f"{year}은 윤년입니다.")
else:
print(f"{year}은 평년입니다.")
연도: 2024
2024은 윤년입니다.가위바위보 (1회)
목표: 사용자와 컴퓨터가 가위바위보를 1회 겨룬 결과를 출력한다.
- 사용자 입력: 가위/바위/보
- 컴퓨터는 random.choice 로 무작위 선택
- 승/무/패 판정 후 출력
가위/바위/보 중 선택: 가위
컴퓨터: 보
당신이 이겼습니다!▶정답 코드 펼치기 / 접기
import random
choices = ["가위", "바위", "보"]
user = input("가위/바위/보 중 선택: ")
computer = random.choice(choices)
print(f"컴퓨터: {computer}")
if user == computer:
print("비겼습니다.")
elif (user == "가위" and computer == "보") or \
(user == "바위" and computer == "가위") or \
(user == "보" and computer == "바위"):
print("당신이 이겼습니다!")
else:
print("컴퓨터가 이겼습니다.")
가위/바위/보 중 선택: 가위
컴퓨터: 보
당신이 이겼습니다!