AD JB Toolbox 01

Python 강좌 / if·elif·else로 조건에 따라 실행하기

if·elif·else는 조건에 따라 실행 경로를 선택합니다. 한 묶음에서는 위에서부터 검사해 처음 참인 분기 하나만 실행하므로 조건의 순서와 경계를 먼저 설계해야 합니다.

분기와 들여쓰기의 역할

조건식 뒤에는 콜론을 쓰고 실행할 문장을 들여씁니다. 같은 분기의 문장은 같은 깊이로 맞추며 일반적으로 공백 네 칸을 사용합니다. 탭과 공백을 섞으면 보기와 실제 해석이 달라질 수 있습니다. else에는 조건을 적지 않습니다.

관련 동작과 지원 조건은 if·elif·else로 조건에 따라 실행하기 관련 공식 문서에서 확인할 수 있습니다.

별개의 if 두 개는 둘 다 실행될 수 있지만 if·elif 묶음은 하나만 실행됩니다. 서로 배타적인 등급을 나눌지, 독립 조건을 각각 검사할지 먼저 정합니다.

전체 예제와 실행 결과

별도의 실습 폴더에서 아래 파일을 UTF-8로 저장합니다. 가상환경을 선택한 터미널에서 python classify.py 명령으로 실행합니다. macOS·Ubuntu에서 가상환경을 사용하지 않는 경우 명령 이름을 python3으로 바꿉니다.

classify.py 파일의 전체 내용입니다.

amount = 8000
if amount < 0:
    label = "invalid"
elif amount == 0:
    label = "free"
elif amount <= 10000:
    label = "small"
else:
    label = "large"
print(label)

예상 결과는 다음과 같습니다.

small

분기 순서와 경계값 설계

예제는 음수, 0, 1~10000, 10000 초과를 나눕니다. 큰 조건부터 무작정 배치하지 말고 어떤 구간을 먼저 제외해야 나머지를 단순하게 설명할 수 있는지 생각합니다. 조건이 겹치면 뒤의 분기가 도달 불가능할 수 있습니다.

입력 예상 분기
-1 invalid
0 free
1 / 10000 small
10001 large

사용자가 입력한 문자열과 숫자를 바로 비교하지 않습니다. int 변환과 잘못된 입력 처리 문제는 분류 규칙과 별도로 해결해야 합니다.

중첩을 줄이고 모든 경로 확인하기

분기를 지나 사용되는 변수는 실행 가능한 모든 경로에서 값이 정해져야 합니다. 일부 분기에서만 label을 대입하면 다른 입력에서 NameError가 날 수 있습니다. 짧게 만드는 것보다 값이 언제 정해지는지 읽히도록 작성하세요.

  1. 표의 입력을 하나씩 대입해 모든 분기를 확인합니다.
  2. 두 번째 elif의 <=를 <로 바꿔 10000의 분류가 바뀌는지 확인하고 원래대로 되돌립니다.
  3. 서로 독립적인 경고 두 개는 별도 if로 작성하는 편이 적절한지 판단합니다.
같은 카테고리의 다른 글
Python 강좌 / 리스트 만들고 항목 추가·수정·삭제하기

Python 강좌 / 리스트 만들고 항목 추가·수정·삭제하기

리스트의 추가·수정·삭제와 정렬을 실행 예제로 확인합니다. sort와 sorted, 얕은 복사, 빈 목록과 반복 중 변경의 차이를 설명합니다.

Python 강좌 / macOS·Ubuntu에서 Python 실행 환경 준비하기

Python 강좌 / macOS·Ubuntu에서 Python 실행 환경 준비하기

macOS와 Ubuntu의 Python 설치 경로를 확인하고 개발용 가상환경을 만듭니다. 시스템 Python 보호, 배포판 버전 차이와 설치 오류의 확인 기준을 함께 다룹니다.

Python 강좌 / 리스트·딕셔너리·집합 컴프리헨션 사용하기

Python 강좌 / 리스트·딕셔너리·집합 컴프리헨션 사용하기

리스트·딕셔너리·집합 컴프리헨션의 변환과 필터를 비교합니다. 중복 키, 빈 결과와 부수 효과를 확인하며 일반 반복문과의 선택 기준을 익힙니다.

Python 강좌 / 튜플과 시퀀스 언패킹 이해하기

Python 강좌 / 튜플과 시퀀스 언패킹 이해하기

튜플 생성과 언패킹, 별표 수집과 값 교환을 익힙니다. 불변성의 범위와 항목 수 오류, 리스트·딕셔너리와의 선택 기준을 설명합니다.

Python 강좌 / 비교·논리 연산자와 참·거짓 판단하기

Python 강좌 / 비교·논리 연산자와 참·거짓 판단하기

비교·논리 연산자와 참·거짓 변환을 설명합니다. and·or의 단락 평가, 0과 None의 차이, ==와 is의 용도를 예제로 확인합니다.

Python 강좌 / while·break·continue로 반복 제어하기

Python 강좌 / while·break·continue로 반복 제어하기

while의 종료 조건과 break·continue의 실행 범위를 설명합니다. 지출 입력 반복 예제로 빈 입력·음수·종료 문자를 처리하고 무한 반복 원인을 확인합니다.

Python 강좌 / 집합으로 중복 제거하고 자료형 선택하기

Python 강좌 / 집합으로 중복 제거하고 자료형 선택하기

집합의 중복 제거와 합집합·교집합·차집합을 익힙니다. 허용 분류 검증 예제로 순서·횟수 정보와 remove·discard의 차이를 확인합니다.

Python 강좌 / 변수·주석·입력과 출력으로 첫 프로그램 만들기

Python 강좌 / 변수·주석·입력과 출력으로 첫 프로그램 만들기

변수 대입과 주석, input·print의 역할을 익힙니다. 입력 문자열을 금액으로 변환하고 f-string으로 출력하며 잘못된 입력의 원인을 확인합니다.

Python 강좌 / 함수 정의하고 값 반환하기

Python 강좌 / 함수 정의하고 값 반환하기

def·매개변수·return으로 계산 함수를 작성합니다. 출력과 반환의 차이, 함수 책임과 입력 전제, 호출 오류의 확인 방법을 설명합니다.

Python 강좌 / for·range·enumerate·zip으로 반복하기

Python 강좌 / for·range·enumerate·zip으로 반복하기

for·range·enumerate·zip의 용도를 비교합니다. 번호와 지출 항목을 함께 출력하며 범위의 끝 제외, zip의 길이 불일치와 반복 중 변경 문제를 확인합니다.