Part 1: 수학 공부를 위한 파이썬 첫걸음
Chapter 3: 조건을 판단하고 실행하기 (Making Decisions - Conditional Statements)
학습 목표
- 참(True)과 거짓(False)을 나타내는 불리언(Boolean) 값을 이해한다.
- 비교 연산자(==, !=, >, <, >=, <=)를 사용하여 두 값을 비교할 수 있다.
if
문을 사용하여 특정 조건이 참일 때만 코드를 실행할 수 있다.else
문을 사용하여if
조건이 거짓일 때 실행될 코드를 지정할 수 있다.elif
문을 사용하여 여러 조건들을 순서대로 검사할 수 있다.- 논리 연산자(
and
,or
,not
)를 사용하여 여러 조건을 조합할 수 있다.
1. 컴퓨터는 어떻게 결정을 내릴까? 조건문
우리 삶은 끊임없는 선택과 결정의 연속입니다. "만약 비가 오면 우산을 가져간다", "만약 시험 점수가 90점 이상이면 A등급이다" 와 같이 특정 조건에 따라 다른 행동을 합니다. 컴퓨터 프로그램도 마찬가지입니다. 주어진 조건이 참인지 거짓인지 판단하고, 그 결과에 따라 정해진 작업을 수행해야 할 때가 많습니다. 이렇게 조건에 따라 프로그램의 실행 흐름을 제어하는 것을 조건문(Conditional Statement)이라고 합니다.
파이썬에서는 if
, elif
, else
키워드를 사용하여 조건문을 만듭니다. 조건문을 사용하면 프로그램이 훨씬 더 유연하고 지능적으로 동작하게 만들 수 있습니다.
2. 참(True) 또는 거짓(False): 불리언과 비교 연산자
조건문의 핵심은 조건을 참(True) 또는 거짓(False)으로 판단하는 것입니다. 파이썬에서는 이 두 가지 값을 불리언(Boolean) 타입이라고 부릅니다.
조건이 참인지 거짓인지 판단하기 위해 비교 연산자(Comparison Operator)를 사용합니다.
연산자 | 의미 | 예시 | 결과 |
---|---|---|---|
== | 같다 (Equal to) | 5 == 5 | True |
!= | 다르다 (Not equal to) | 5 != 3 | True |
> | 크다 (Greater than) | 5 > 3 | True |
< | 작다 (Less than) | 5 < 3 | False |
>= | 크거나 같다 (Greater or equal) | 5 >= 5 | True |
<= | 작거나 같다 (Less or equal) | 5 <= 3 | False |
주의: =
는 값을 변수에 할당하는 할당 연산자이고, ==
는 두 값이 같은지 비교하는 비교 연산자입니다. 혼동하지 마세요!
print(10 == 10) # True
print(10 != 10) # False
print("hello" == "world") # False
print(3.14 < 3) # False
x = 5
print(x > 0) # True
print(x <= 5) # True
3. "만약 ~라면": if
문
가장 기본적인 조건문은 if
문입니다. if
키워드 뒤에 오는 조건식이 참(True)일 경우에만, 그 아래에 들여쓰기(indentation) 된 코드 블록이 실행됩니다.
if 조건식:
# 조건식이 참일 때 실행될 코드 (반드시 들여쓰기!)
- 조건식 끝에는 반드시 콜론(
:
)을 붙여야 합니다. - 실행될 코드는 반드시 같은 수준으로 들여쓰기 해야 합니다. (보통 공백 4칸 또는 탭 1칸 사용)
score = 95
if score >= 90:
print("축하합니다! A등급입니다.") # 조건(score >= 90)이 참이므로 실행됨
print("정말 잘했어요!") # 같은 블록 안에 있으므로 함께 실행됨
print("프로그램 종료") # if 문과는 상관없이 항상 실행됨
temperature = 10
if temperature < 0:
print("날씨가 매우 춥습니다. 영하입니다.") # 조건(10 < 0)이 거짓이므로 실행되지 않음
4. "그렇지 않다면": else
문
if
문의 조건이 거짓(False)일 때 실행할 코드를 지정하고 싶으면 else
문을 사용합니다. else
는 단독으로 사용할 수 없고, 반드시 if
문 뒤에 와야 합니다.
if 조건식:
# 조건식이 참일 때 실행될 코드
else:
# 조건식이 거짓일 때 실행될 코드 (반드시 들여쓰기!)
else
뒤에도 반드시 콜론(:
)을 붙여야 합니다.
age = 17
if age >= 20:
print("성인입니다.")
else:
print("미성년자입니다.") # age >= 20 이 거짓이므로 이 코드가 실행됨
num = 7
if num % 2 == 0: # 짝수인지 검사
print("짝수입니다.")
else:
print("홀수입니다.") # num % 2 == 0 이 거짓이므로 이 코드가 실행됨
5. "그것도 아니라면": elif
문
여러 개의 조건을 순서대로 검사하고 싶을 때는 elif
(else if의 줄임말) 문을 사용합니다. if
조건이 거짓이면 첫 번째 elif
조건을 검사하고, 그것도 거짓이면 다음 elif
조건을 검사하는 식으로 진행됩니다. 모든 if
와 elif
조건이 거짓일 경우에만 마지막 else
블록이 실행됩니다 ( else
는 생략 가능).
if 첫 번째 조건식:
# 첫 번째 조건이 참일 때 실행
elif 두 번째 조건식:
# 첫 번째 조건은 거짓이고, 두 번째 조건이 참일 때 실행
elif 세 번째 조건식:
# 앞의 조건들이 모두 거짓이고, 세 번째 조건이 참일 때 실행
...
else:
# 위의 모든 조건이 거짓일 때 실행 (선택 사항)
score = 75
if score >= 90:
print("A등급")
elif score >= 80: # 90점 미만이지만 80점 이상인 경우
print("B등급")
elif score >= 70: # 80점 미만이지만 70점 이상인 경우 (이 조건이 참!)
print("C등급") # 이 코드가 실행되고 이후 elif/else는 검사하지 않음
elif score >= 60:
print("D등급")
else: # 60점 미만인 경우
print("F등급")
# 순서가 중요합니다! 만약 elif 순서를 바꾸면 결과가 달라질 수 있습니다.
num = 0
if num > 0:
print("양수")
elif num < 0:
print("음수")
else: # num > 0 도 아니고, num < 0 도 아니면 (num == 0)
print("0")
6. 조건들을 연결하기: 논리 연산자 (and
, or
, not
)
여러 개의 조건을 조합하여 더 복잡한 판단을 내릴 수 있습니다.
and
: 양쪽 조건이 모두 참(True)일 때만 전체 결과가 참(True). (그리고)or
: 양쪽 조건 중 하나라도 참(True)이면 전체 결과가 참(True). (또는)not
: 조건의 결과(True 또는 False)를 반대로 뒤집음. (아니다)
age = 15
height = 170
# 놀이기구 탑승 조건: 나이가 10살 이상이고 키가 140cm 이상
if age >= 10 and height >= 140:
print("놀이기구 탑승 가능합니다.")
else:
print("놀이기구 탑승이 불가능합니다.")
day = "토요일"
# 주말인지 확인: 토요일 또는 일요일
if day == "토요일" or day == "일요일":
print("주말입니다! 쉬세요!")
else:
print("평일입니다. 힘내세요!")
is_raining = False
# 비가 오지 않으면 (!= True 와 같음)
if not is_raining:
print("날씨가 맑습니다. 산책하기 좋은 날씨네요.")
else:
print("비가 옵니다. 우산을 챙기세요.")
# and, or, not 혼합 사용 및 괄호 사용
score = 85
attendance = True
# 통과 조건: 점수가 60점 이상이고 출석했거나, 점수가 90점 이상이면 (출석 무관)
if (score >= 60 and attendance == True) or score >= 90:
print("과목 통과!")
else:
print("과목 미이수.")
수학 문제에 적용하기
조건문은 다양한 수학적 판단에 활용될 수 있습니다.
수의 성질 판별: 양수/음수/0, 짝수/홀수, 배수 판별 (
num % 3 == 0
은 3의 배수)좌표 평면 사분면 판별:
x = 3 y = -2 if x > 0 and y > 0: print("제 1 사분면") elif x < 0 and y > 0: print("제 2 사분면") elif x < 0 and y < 0: print("제 3 사분면") elif x > 0 and y < 0: print("제 4 사분면") else: print("축 위에 있음")
이차방정식 근의 개수 판별: (Chapter 7에서 자세히 다룸)
# 판별식 D = b**2 - 4*a*c 계산 후 # if D > 0: print("서로 다른 두 실근") # elif D == 0: print("중근") # else: print("서로 다른 두 허근 (실근 없음)")
범위 확인: 점수가 특정 구간(예: 80점 이상 90점 미만)에 속하는지 검사 (
score >= 80 and score < 90
)절댓값 계산:
num = -5 if num < 0: absolute_value = -num else: absolute_value = num print(f"{num}의 절댓값: {absolute_value}") # 내장 함수 abs(num) 사용 가능
직접 해보기 (Follow Along Exercise)
사용자로부터 정수 하나를 입력받아, 그 수가 짝수인지 홀수인지 판별하여 출력하는 프로그램을 작성해보세요. (%
연산자 활용)
# 직접 코드를 작성하고 실행해보세요!
num_str = input("정수를 입력하세요: ")
number = int(num_str)
if number % 2 == 0:
print(f"{number}는(은) 짝수입니다.")
else:
print(f"{number}는(은) 홀수입니다.")
연습 문제
- 사용자로부터 점수를 입력받아 90점 이상이면 "A", 80점 이상 90점 미만이면 "B", 70점 이상 80점 미만이면 "C", 그 외에는 "D"를 출력하는 프로그램을
if-elif-else
문을 사용하여 작성하세요. - 세 개의 양의 정수 a, b, c를 입력받아, 이 세 수로 삼각형을 만들 수 있는지 판별하는 프로그램을 작성하세요. (삼각형 결정 조건: 가장 긴 변의 길이는 나머지 두 변의 길이의 합보다 작아야 한다.)
- 연도를 입력받아 윤년인지 아닌지 판별하는 프로그램을 작성하세요. (윤년 조건: 4의 배수이면서 100의 배수가 아니거나, 400의 배수일 때)
COMMENTS