제어문 - 조건문

현서·2025년 1월 1일

파이썬

목록 보기
11/27
post-thumbnail

1. 조건문

  • 코드의 실행 흐름을 제어하기 위해 사용하는 구문
  • 주어진 조건이 참인지 거짓인지에 따라 다른 코드를 실행하게 한다.

2. if 문

  • 가장 기본적인 조건문
  • 특정 조건이 참(True)일 경우에만 해당 블록 내의 코드가 실행
if 조건:
    실행할 코드

조건은 True 또는 False로 평가될 수 있는 표현식이어야 한다.
조건이 True로 평가되면 if 문 바로 아래의 코드 블록이 실행된다.
그렇지 않으면 그 코드 블록은 건너뛴다.

if True:
    print('결과는 참입니다')
print('프로그램을 종료합니다')
결과는 참입니다
프로그램을 종료합니다
if False:
    print('결과는 참입니다')
print('프로그램을 종료합니다')
프로그램을 종료합니다
if '안녕하세요':
    print('결과는 참입니다')
print('프로그램을 종료합니다')
결과는 참입니다
프로그램을 종료합니다
if '':
    print('결과는 참입니다')
print('프로그램을 종료합니다')
프로그램을 종료합니다
if '안녕하세요':print('결과는 참입니다')
print('프로그램을 종료합니다')
결과는 참입니다
프로그램을 종료합니다
if '':print('결과는 참입니다')
print('프로그램을 종료합니다')
프로그램을 종료합니다
if '안녕하세요':
    print('결과는 참입니다')
    print('아주 잘했습니다.')
print('프로그램을 종료합니다')
결과는 참입니다
아주 잘했습니다.
프로그램을 종료합니다
if '':
    print('결과는 참입니다')
    print('아주 잘했습니다.')
print('프로그램을 종료합니다')
프로그램을 종료합니다
age = int(input('나이를 입력하세요: '))

if age > 19:
    print('성인입니다')

print('입력한 나이: ', age)
나이를 입력하세요: 24
성인입니다
입력한 나이:  24
age = int(input('나이를 입력하세요: '))

if age > 19:
    print('성인입니다')
    print('넷플릭스 성인영화를 감상할 수 있습니다')
print('입력한 나이: ', age)
나이를 입력하세요: 24
성인입니다
넷플릭스 성인영화를 감상할 수 있습니다
입력한 나이:  24

3. else 문

조건문에서 특정 조건이 충족되지 않을 때,
실행할 코드 블록을 정의할 때 사용

if 조건1:
    코드 블록1
else:
    코드 블록3
age = int(input('나이를 입력하세요'))

if age > 19:
    print('성인입니다')
    print('넷플릭스 성인영화를 감상할 수 있어요')
else:
    print('미성년입니다')
    print('디즈니플러스를 보세요')
print('입력한 나이: ', age)
나이를 입력하세요24
성인입니다
넷플릭스 성인영화를 감상할 수 있어요
입력한 나이:  24

4. elif 문

elif는 if-else 구조에서 추가적인 조건을 검사하기 위해 사용한다.
elif는 "else if"의 줄임말.
주어진 여러 조건 중에서 하나만 참일 때 실행되는 코드 블록을 정의한다.

  • elif는 if 없이 단독으로 사용될 수 없다.
  • elif는 필요에 따라 여러 번 사용될 수 있다.
  • else는 선택적이다. 사용될 경우, 항상 if나 elif 뒤에 나타나야 한다.
if 조건1:
    코드 블록1
elif 조건2:
    코드 블록2
elif 조건3:
    코드 블록3
else:
    코드 블록4
age = int(input('나이를 입력하세요: '))

if age > 19:
    print('성인입니다')
elif age > 14:
    print('청소년입니다')
elif age > 6:
    print('어린이입니다')
elif age > 0:
    print('유아입니다')
# else:
#     print('입력을 확인하세요')

print('입력한 나이: ', age)
나이를 입력하세요: 16
청소년입니다
입력한 나이:  16

문제 1

  • 로그인 프로그램 만들기
  • 아이디: admin, 비밀번호: 1234
userid = input('아이디를 입력하세요')
userpw = input('비밀번호를 입력하세요')

if userid == 'admin' and userpw == '1234':
    print('로그인 되었습니다')
else:
    print('아이디 또는 비밀번호를 확인하세요')
아이디를 입력하세요admin
비밀번호를 입력하세요1234
로그인 되었습니다

문제 2

  • 주민등록번호에 의한 성별을 판별하는 프로그램 만들기
  • 0010113068518
juminNo = input('주민등록번호 13자리를 -없이 입력하세요')

if juminNo[6] == '1' or juminNo[6] == '3' or juminNo[6] == '5' or juminNo[6] == '7' or juminNo[6] == '9'
    print('남자')
else:
    print('여자')
주민등록번호 13자리를 -없이 입력하세요01103040000000
여자
juminNo = input('주민등록번호 13자리를 -없이 입력하세요')
if int(juminNo[6]) % 2 == 1:
    print('남자')
else:
    print('여자')
주민등록번호 13자리를 -없이 입력하세요0109213000000
남자

5. 조건부 표현식

  • 조건부 표현식(삼항연산자)
  • 간단한 if-else 구문을 더 간결하게 표현할 수 있는 방법을 제공한다.
  • 조건부 표현식은 코드를 간결하게 만들어주지만,
    너무 복잡한 조건이나 연산을 포함하면 코드의 가독성이 떨어질 수 있다.
  • 적절한 상황에서만 사용하는 것이 좋다.
조건이 참인 경우 값 if 조건 else 조건이 거짓인 경우 값
# if~else로 작성
num = int(input('숫자를 입력하세요: '))
if num % 2 == 0:
    print('짝수')
else:
    print('홀수')
숫자를 입력하세요: 5
홀수
# 조건부 표현식으로 작성
num = int(input('숫자를 입력하세요: '))
print('짝수') if num % 2 == 0 else print('홀수')
숫자를 입력하세요: 5
홀수
# if~elif~else로 작성
age = int(input('나이를 입력하세요'))

if age > 19:
    print('성인입니다')
elif age > 14:
    print('청소년입니다')
elif age > 6:
    print('어린이입니다')
elif age > 0:
    print('유아입니다')
else:
    print('다시 입력해주세요')
print('입력한 나이: ', age)
나이를 입력하세요8
어린이입니다
입력한 나이:  8
# 조건부 표현식으로 작성
age = int(input('나이를 입력하세요'))
print('성인입니다') if age > 19 else print('청소년입니다') if age > 14 else print('어린이입니다') if age > 6 else print('유아입니다') if age > 0 else print('다시 입력해주세요')
나이를 입력하세요20
성인입니다

6. 구조적 패턴 매칭

파이썬에서 if-elif-else 구문을 좀 더 간결하고 읽기 쉽게 만든 새로운 분기문.

match 값:
    case 패턴1:
        실행할 코드1
    case 패턴2:
        실행할 코드2
    case _:
        기본 실행 코드 (default)
month = int(input("월을 입력하세요 (1~12): "))

match month:
    case 1 | 3 | 5 | 7 | 8 | 10 | 12:
        print(f"{month}월은 31일까지 있습니다.")
    case 4 | 6 | 9 | 11:
        print(f"{month}월은 30일까지 있습니다.")
    case 2:
        print("2월은 28일 또는 윤년이면 29일까지 있습니다.")
    case _:
        print("잘못된 월입니다. 1~12 사이의 숫자를 입력해주세요.")
월을 입력하세요 (1~12): 8
8월은 31일까지 있습니다.
blood = input("혈액형을 입력하세요 (A, B, AB, O): ").upper()  # 대소문자 구분 없이 입력

match blood:
    case "A":
        print("A형은 꼼꼼하고 성실한 성격이 많습니다.")
    case "B":
        print("B형은 자유롭고 창의적인 성격이 많습니다.")
    case "AB":
        print("AB형은 이성과 감성을 모두 가진 복합형입니다.")
    case "O":
        print("O형은 외향적이고 리더십이 강한 편입니다.")
    case _:
        print("잘못된 혈액형입니다. A, B, AB, O 중 하나를 입력하세요.")
혈액형을 입력하세요 (A, B, AB, O): o
O형은 외향적이고 리더십이 강한 편입니다.
user = ("김사과", 20)

match user:
    case (name, age) if age > 19:
        print(f"{name}님은 성인입니다.")
    case (name, age) if age > 15:
        print(f"{name}님은 청소년입니다.")
    case (name, age) if age > 6:
        print(f"{name}님은 어린이입니다.")
    case _:
        print(f'{name}님은 유아입니다.')
김사과님은 성인입니다.
# scores = [95, 88, 76]
# scores = (95, 88, 76)
scores = {"국어":95, "영어":88, "수학":76}

match scores:
    case [korean, english, math]: # 형태가 같으면 list와 tuple은 같은 형으로 취급.
        print(f"1. 국어: {korean}, 영어: {english}, 수학: {math}")
    case (korean, _, math): # _ : 변수를 안 만들겠다는 뜻.
        print(f"2. 국어: {korean}, 수학: {math}")
    case {"국어": korean, "영어": english, "수학": math}:
        print(f"3. 국어: {korean}, 영어: {english}, 수학: {math}")
3. 국어: 95, 영어: 88, 수학: 76

✔ 다시 정리해보기!

🔹 조건부 표현식

파이썬에서 삼항연산자라고도 불림. 코드를 간결하게.

조건이 참인 경우 값 if condition else 조건이 거짓인 경우 값

🔹 구조적 패턴 매칭

match 값:
    case 패턴1:
        실행할 코드1
    case 패턴2:
        실행할 코드2
    case _:
        기본 실행 코드 (default)
profile
The light shines in the darkness.

0개의 댓글