연산자와 조건문 | ✅저자: 이유정(박사)
Bool만들기: 비교연산자
🔹 비교 연산자란?
비교 연산자는 두 값을 비교해서 결과를 True(참) 또는 False(거짓)로
반환하는 연산자입니다.(T, F는 대문자) 이 결과는 조건문, 반복문,
필터링 등에 자주 사용됩니다.
즉, "이게 맞아?"를 판단해주는 연산자예요.
연산자 | 의미 | 예시 | 결과 |
---|---|---|---|
== |
같다 | 3 == 3 |
True |
!= |
다르다, 같지 않다. | 3 != 4 |
True |
> |
크다 | 5 > 2 |
True |
< |
작다 | 1 < 10 |
True |
>= |
크거나 같다 | 4 >= 4 |
True |
<= |
작거나 같다 | 2 <= 1 |
False |
</> 예시코드1 : 사용자 입력 검증 및 조건 분기 (회원가입 나이 제한)
age = int(input("나이를 입력하세요: ")) # 13
if 0 < age < 100:
if age < 14:
print("가입 불가: 만 14세 미만은 가입할 수 없습니다.")
elif age >= 19:
print("성인 인증 완료: 전체 서비스 이용 가능")
else:
print("청소년 계정으로 제한된 서비스 이용 가능")
else:
print("입력 오류: 나이는 1~99 사이로 입력해주세요.")
🖨️ 출력결과:
가입 불가: 만 14세 미만은 가입할 수 없습니다.
🔍 해설:
- 입력값의 유효성 검사 (
0 < age < 100
) - 연령대에 따라 조건 분기 (
< 14
,>= 19
등) - 실제 사용자 인증, 서비스 제한 등에 많이 쓰이는 형식입니다.
◽ 조건식의 삼항 연산자 (삼항 조건 연산자)
삼항 연산자는 조건에 따라 하나의 값을 선택할 때 사용하는 간단한 조건문 표현 방식입니다. 한 줄로 if-else
구문을 표현할 수 있어 가독성이 좋고 코드가 간결해집니다.
단, 중첩 삼항 연산자를 활용하면 가독성이 나빠질 수 있습니다.
📖 문법, 구문(syntax):
변수 = 값1(True 자리) if 조건식 / else 값2(False 자리)
</> 예시코드1 : 사용자 입력 검증 및 조건 분기 ⚠️ 권장하지 않음.
age = int(input("나이를 입력하세요: ")) # 13
if 0 < age < 100:
if age < 14:
print("가입 불가: 만 14세 미만은 가입할 수 없습니다.")
elif age >= 19:
print("성인 인증 완료: 전체 서비스 이용 가능")
else:
print("청소년 계정으로 제한된 서비스 이용 가능")
else:
print("입력 오류: 나이는 1~99 사이로 입력해주세요.")
# 삼항으로 변경
age = int(input("나이를 입력하세요: "))
result = (
"가입 불가: 만 14세 미만은 가입할 수 없습니다." if 0 < age < 14 else
"성인 인증 완료: 전체 서비스 이용 가능" if 19 <= age < 100 else
"청소년 계정으로 제한된 서비스 이용 가능" if 14 <= age < 19 else
"입력 오류: 나이는 1~99 사이로 입력해주세요."
)
print(result)
</> 예시코드2 : 문자열 처리와 조건문 (파일 확장자 체크)
filename = input("파일명을 입력하세요: ")
if filename.endswith(".jpg") or filename.endswith(".png"):
print("이미지 파일입니다.")
elif filename.endswith(".pdf") or filename.endswith(".docx"):
print("문서 파일입니다.")
else:
print("지원하지 않는 파일 형식입니다.")
◽ 위의 코드를 삼항연산자로 변경
filename = input("파일명을 입력하세요: ")
result = ( "이미지 파일입니다." if filename.endswith(".jpg") or filename.endswith(".png") else "문서 파일입니다." if filename.endswith(".pdf") or filename.endswith(".docx") else "지원하지 않는 파일 형식입니다."
)
print(result)
📝 문제1] 점수 score
가 다음 조건일 때,
"우수" / "보통" / "미달" 중 하나를 출력하세요:
- 90 이상이면
"우수"
- 70 이상 90 미만이면
"보통"
- 70 미만이면
"미달"
단,score = 85
로 가정하고 작성하세요.
✅ 정답 코드:
score = 85
if score >= 90:
print("우수")
elif score >= 70:
print("보통")
else:
print("미달")
🖨️ 출력 결과:
보통
📝 문제3] 다음 코드를 실행했을 때 출력 결과는?
a = 3
b = 8
result = "짝수" if (a + b) % 2 == 0 else "홀수"
print(result)
🖨️ 출력 결과 (예시 입력: 3, 3):
홀수
</> 조건식으로 변경해보세요.
a = 3
b = 8
if (a + b) % 2 == 0:
result = "짝수"
else:
result = "홀수"
print(result)
논리연산자
🔹 논리 연산자란?
논리 연산자는 두 개 이상의 조건을 조합해서 True 또는 False 값을
만들어 냅니다.
조건이 여러 개일 때 and, or, not 연산자를 사용하여 복합 조건을
만들 수 있습니다.
연산자 | 의미 | 예제 | 설명 |
---|---|---|---|
and |
그리고 | 3 > 1 and 5 > 2 | 둘 다 참일 때만 True |
or |
또는 | 3 < 1 or 5 > 2 | 하나만 참이어도 True |
not |
반대 | not (3 > 1) | 결과를 반대로 바꿈(조건반전) |
</> 예시코드1 : 논리 연산자 기본 사용
a = 10
b = 5
c = 7
print(a > b and a > c) # 둘 다 참이면 True
print(a > b or a < c) # 둘 중 하나라도 참이면 True
print(not a > c) # 결과 반전
🖨️ 출력결과:
True
True
False
🔍 해설:
10 > 5 and 10 > 7
→ 둘 다True
→ 결과는True
10 > 5 or 10 < 7
→ 첫 번째 조건이True
→ 결과는True
not 10 > 7
→10 > 7
은True
, 하지만not
이 반전시켜 →False
</>예시코드2 : 로그인 권한 검사 예제
user_logged_in = True
user_role = "admin"
if user_logged_in and (user_role == "admin" or user_role == "manager"):
print("접근 허용: 관리자 페이지에 입장합니다.")
else:
print("접근 거부: 권한이 없습니다.")
🖨️ 출력결과:
접근 허용: 관리자 페이지에 입장합니다.
🔍 해설:
user_logged_in
은True
→ 로그인 상태user_role
은"admin"
→"admin"
또는"manager"
중 하나이므로True
- 전체 조건은
True and (True or False)
→True and True
→True
- 따라서 관리자 페이지에 접근 허용
📝 문제1] 변수 x = 4
, y = 9
일 때, x < 10 and y > 5
의 결과를 출력하세요.
✅ 정답 코드:
x = 4
y = 9
print(x < 10 and y > 5)
🖨️ 출력 결과:
True
🔍 해설:
x < 10
은True
,y > 5
도True
→ 둘 다 참이므로True
📝 문제2] 변수 a = 3
, b = 7
일 때, a > 5 or b < 10
의 결과를 출력하세요.
✅ 정답 코드:
a = 3
b = 7
print(a > 5 or b < 10)
🖨️ 출력 결과:
True
🔍 해설:
a > 5
는False
,b < 10
은True
→ 하나만 참이어도or
는True
📝 문제3] 사용자에게 숫자를 입력받고, 10 이상인지 아닌지 반대로 판단하여 출력하세요.
num = int(input("반드시숫자입력:"))
print("10 미만인가요? " , not num >= 10)
논리연산자의 활용
🔹 논리 연산자 조합
and, or, not과 같은 논리 연산자는 단독으로도 유용하지만,
if 조건문과 함께 사용하면 더 정교한 조건 판단이 가능해집니다.
복잡한 상황에서도 한 줄의 조건문으로 여러 조건을 조합할 수 있습니다.
</> 예시코드1 : 사용자 나이와 국가를 함께 판단
age = 25
country = "Korea"
if age >= 20 and country == "Korea":
print("한국 성인입니다.")
🖨️ 출력결과:
한국 성인입니다.
🔍 해설:
- 두 조건
age >= 20
과country == "Korea"
가 모두 참이므로 실행됨 and
연산자를 사용하여 두 조건을 모두 만족하는지 확인
</> 예시코드2 : 결제 완료된 VIP 회원만 할인 제공
membership = "VIP"
payment_complete = True
if membership == "VIP" and payment_complete:
print("할인이 적용되었습니다.")
else:
print("할인 대상이 아닙니다.")
🖨️ 출력결과:
할인이 적용되었습니다.
🔍 해설:
membership == "VIP"
→ 참payment_complete
→True
(결제 완료)- 따라서
VIP 회원이며 결제도 완료한 경우
→ 조건True and True
→ 할인 적용
📝 문제1] 변수 score = 85
, attendance = 90
일 때
점수가 80 이상이고 출석률이 85 이상이면 "합격"
을 출력하세요.
✅ 정답 코드:
score = 85
attendance = 90
if score >= 80 and attendance >= 85:
print("합격")
🖨️ 출력 결과:
합격
🔍 해설:
- 두 조건 모두
True
→and
연산 결과도True
→"합격"
출력
📝 문제2] 사용자에게 나이를 입력받고,
20~30대인지 이후나이대 인지 확인하여 출력하는 조건문을 만들어 보세요.
🖨️ 출력 결과 (예시 입력: 24):
젊은세대
✨ 힌트:
10대 조건
과 30대 조건중 하나만 참이어도
or연산으로
True`
✅ 정답 코드:
age = int(input("나이를 입력하세요: "))
if (age >= 10 and age < 20) or (age >= 20 and age < 30):
print("젊은세대")
📝 문제3] temperature
가 0 미만이거나 35 초과일 경우
"주의! 기온 이상"을 출력하세요.
✅ 정답 코드:
temperature = int(input("현재 기온을 입력하세요: "))
if temperature < 0 or temperature > 35:
print("주의! 기온 이상")
🖨️ 출력 결과 (예시 입력: -2):
주의! 기온 이상
🔍 해설:
or
을 사용해 둘 중 하나라도 조건을 만족하면 경고 메시지 출력- 극한의 기온에 대비한 조건 판단 예시
if 조건문
🔹 if 조건문이란?
if 조건문은 프로그램에서 조건에 따라 다른 동작을 하도록 만드는
문법입니다.
즉, 어떤 조건이 참(True)일 때만 특정 코드를 실행하도록 합니다.
📖 문법, 구문(syntax)
if 조건:
실행할 코드
- 조건이
True
일 때 → 들여쓴 코드를 실행 - 조건이
False
일 때 → 아무것도 실행하지 않음
</> 예시코드1: if 조건문 기본 사용
score = 85
if score >= 80:
print("좋은 점수입니다!")
🖨️ 출력결과:
좋은 점수입니다!
🔍 해설:
score >= 80
조건이True
→ if 아래 코드가 실행됨- 조건이
False
라면 아무것도 출력되지 않음
</> 예시코드2 : 사용자에게 직접 입력 받은 숫자를 양수 음수 0 판별받기
number = input("정수 입력> ") # 사용자로부터 문자열 입력 받음
number = int(number) # 입력 받은 문자열을 정수로 변환
# 양수 조건
if number > 0: # number가 0보다 크면 (양수)
print("양수입니다")
# 음수 조건
if number < 0: # number가 0보다 작으면 (음수)
print("음수입니다")
# 0 조건
if number == 0: # number가 0과 같으면
print("0입니다")
📝 문제1] 사용자에게 점수를 입력받고, 점수가 90점 이상이면 "A 등급"을 출력하세요.
✅ 정답 코드:
score = int(input("점수를 입력하세요: "))
if score >= 90:
print("A 등급")
🖨️ 출력 결과 (예시 입력: 93):
A 등급
🔍 해설:
- 입력된 점수가
90 이상
→ 조건이True
이므로"A 등급"
출력됨
🔹 날짜/시간 활용하기
datetime 모듈을 사용하면 현재 날짜와 시간을 가져와서 조건문과 함께
요일 판별, 특정 시간대 처리, 날짜 비교 등에 활용할 수 있어요.
- 날짜/시간 가져오기: from datetime import datetime
- 현재 시각: datetime.now()
◽ 파이썬에서 모듈(module)이란,
함수, 변수, 클래스 등을 모아 놓은 .py
파일로, 다른 파이썬 코드에서 불러와서 사용할 수 있는 코드 단위를 말합니다.
</> 예시코드: 현재 시각 확인
from datetime import datetime
now = datetime.now()
print("현재 시각:", now)
🖨️ 출력결과 (예시):
현재 시각: 2025-05-08 11:20:45.123456
🔍 해설:
datetime.now()
는 현재 날짜와 시간을 가져옵니다.- 연도, 월, 일, 시, 분, 초까지 포함된
datetime 객체
입니다.
📝 문제1] 현재 시각이 정오 이전(12시 전)이면 "오전입니다."
를 출력하세요.
from datetime import datetime
now = datetime.now()
if now.hour < 12:
print("오전입니다.")
🖨️ 출력 결과 (예시 시간: 09:15:00):
오전입니다.
🔍 해설:
now.hour
는 현재 시간을 0~23 사이 숫자로 반환- 오전은
hour < 12
조건으로 판별
📝 문제2] 현재 날짜가 월요일인지 판별하여 출력하세요.
- 월 = 0, ....일 = 6
from datetime import datetime
today = datetime.now()
weekday = today.weekday() # 월 = 0, 화 = 1 .....일 = 6
if weekday == 0:
print("오늘은 월요일 입니다.")
if 0 <= weekday <= 4:
print("오늘은 평일 입니다.")
🖨️ 출력 결과 (예시 날짜: 일요일):
오늘은 월요일입니다.
🔍 해설:
.weekday()
는 요일을 숫자로 반환 (월=0, ..., 일=6)
📝 문제3] 사용자가 입력한 생년(예: 2000)을 기준으로,
성인(만 20세 이상)인지 판별해 "성인입니다."
를 출력하세요.
from datetime import datetime
birth_year = int(input("내가 태어난 년도: ex)2000"))
current_year = datetime.now().year
age = current_year - birth_year
if age >= 20:
print("성인입니다")
용어정리: 🔹 괄호를 붙이는 경우: 함수(function) 호출 🔹 괄호 없이 호출하는 경우: 속성(attribute) 접근
◽ 클래스 (Class)란?
객체를 만들기 위한 설계도입니다.
속성(데이터)과 메서드(동작)를 함께 정의합니다.
from datetime import datetime
datetime
은 클래스입니다.datetime
모듈 안에 있는datetime
클래스를 불러온 것입니다.
◽ 함수(Function)란? 어떤 입력값을 받아서, 정해진 작업을 수행한 뒤 결과를 반환하는 코드의 묶음입니다.
now = datetime.now()
now()
는 클래스 메서드입니다. (즉, 클래스 내부에 정의된 함수)입니다.
◽ 객체(Object)란? 클래스를 기반으로 실제로 만들어진 결과물입니다. 함수나 속성을 가진 데이터 뭉치입니다.
now = datetime.now()
datetime
클래스에서 만든 객체를now
라는 변수에 담은 것으로 now는 datetime 객체입니다.
◽ 속성(attribute)이란? 속성(attribute)은 객체가 가지고 있는 값(데이터)을 의미합니다.
now.year
now.month
now.day
now
객체가 가진 정보(상태)를 나타내는 것들이 속성입니다.
◽ 주요 속성 datetime.now( )
속성명 | 설명 | 예시 값 (now = 2025-05-12 07:30:15 ) |
---|---|---|
year |
연도 | 2025 |
month |
월 | 5 |
day |
일 | 12 |
hour |
시 | 7 |
minute |
분 | 30 |
second |
초 | 15 |
microsecond |
마이크로초 | 123456 |
weekday() |
요일 (월=0, 일=6) | 0 |
date() |
날짜만 | 2025-05-12 (date 객체) |
time() |
시간만 | 07:30:15.123456 (time 객체) |
datetime.now() |
현재 날짜와 시간 | 클래스메서드 |
datetime() ❌ 직접 사용 시 에러 발생하거나 전체 인자를 요구함 |
🔹 짝수와 홀수 구분하기
</> 예시코드: 1단계
# 입력을 받습니다.
number = input("정수 입력> ")
# 마지막 자리 숫자를 추출
last_character = number[-1]
# 숫자로 변환하기
last_number = int(last_character)
# 짝수 확인
if last_number == 0 \
or last_number == 2 \
or last_number == 4 \
or last_number == 6 \
or last_number == 8:
print("짝수입니다")
# 홀수 확인
if last_number == 1 \
or last_number == 3 \
or last_number == 5 \
or last_number == 7 \
or last_number == 9:
print("홀수입니다")
</> 예시코드: 2단계
# 입력을 받습니다.
number = input("정수 입력> ") # 문자열 형태로 정수를 입력받음
last_character = number[-1] # 문자열의 마지막 문자(끝자리 숫자)를 가져옴
# 짝수 조건
if last_character in "02468": # 끝자리가 짝수 문자 중 하나면
print("짝수입니다")
# 홀수 조건
if last_character in "13579": # 끝자리가 홀수 문자 중 하나면
print("홀수입니다")
</> 예시코드: 3단계
number = input("정수 입력> ")
number = int(number) # 문자열을 정수(int)로 변환
# 짝수 조건
if number % 2 == 0: # 2로 나눈 나머지가 0이면 짝수
print("짝수입니다")
# 홀수 조건
if number % 2 == 1: # 2로 나눈 나머지가 1이면 홀수
print("홀수입니다")