AD JB Toolbox 01

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

비교 연산자는 값의 관계를 판단하고 논리 연산자는 조건을 조합합니다. Python의 and·or는 항상 bool을 반환하는 연산이 아니므로 조건 검사와 기본값 선택을 구분해야 합니다.

비교와 대입은 다른 연산입니다

같은지 비교할 때는 ==를 쓰고 값을 연결할 때는 =를 씁니다. !=는 다름, <와 >는 크기 비교입니다. 0 <= amount <= 10000처럼 연속 비교도 가능하며 양쪽 경계를 포함합니다. 숫자와 문자열을 크기로 비교할 수 있다고 가정하지 말고 입력을 검증한 뒤 같은 의미의 자료형으로 맞춥니다.

관련 동작과 지원 조건은 비교·논리 연산자와 참·거짓 판단하기 관련 공식 문서에서 확인할 수 있습니다.

None은 값이 없음을 나타내는 객체입니다. None 여부는 is None으로 검사합니다. is는 객체의 동일성이고 ==는 값의 동등성이므로 두 리스트의 내용 비교에 is를 쓰면 안 됩니다.

전체 예제와 실행 결과

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

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

amount = 8000
category = "food"
print(0 < amount <= 10000)
print(amount > 5000 and category == "food")
print(not category)
print("" or "unknown")
print(0 or 100)
print([] == [], [] is [])

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

True
True
False
unknown
100
True False

단락 평가와 참·거짓 변환

빈 문자열·빈 컨테이너·0·None은 조건에서 거짓으로 평가됩니다. 문자열 "False"는 비어 있지 않으므로 참입니다. 외부 설정값을 bool("False")로 변환하면 원하는 결과가 되지 않습니다.

and는 왼쪽이 거짓이면 오른쪽을 평가하지 않고, or는 왼쪽이 참이면 오른쪽을 평가하지 않습니다. 이를 단락 평가라고 합니다. 둘 다 선택된 피연산자 자체를 반환할 수 있으므로 결과를 반드시 True나 False라고 단정하지 않습니다.

0과 빈 값이 유효할 때의 기본값

amount or 100은 amount가 0이어도 100을 선택합니다. 0원이 유효한 값이고 None일 때만 기본값을 써야 한다면 100 if amount is None else amount로 조건을 분명히 합니다. 편리한 축약 때문에 데이터 의미가 바뀌지 않는지 확인하세요.

  1. amount를 10000과 10001로 바꾸고 경계 포함 여부를 확인합니다.
  2. category를 빈 문자열로 바꾸고 not category의 결과를 비교합니다.
  3. 값 비교에는 ==, None 검사에는 is None을 쓰는 이유를 설명합니다.
같은 카테고리의 다른 글
Python 강좌 / macOS·Ubuntu에서 Python 실행 환경 준비하기

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

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

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

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

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

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

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

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

Python 강좌 / 위치·키워드 인수와 기본값 사용하기

Python 강좌 / 위치·키워드 인수와 기본값 사용하기

위치·키워드·키워드 전용 인수와 기본값을 익힙니다. 변경 가능한 기본값의 공유 문제와 None 검사로 호출별 상태를 분리하는 방법을 설명합니다.

Python 강좌 / 조건과 반복 종합 실습: 점수 집계 프로그램

Python 강좌 / 조건과 반복 종합 실습: 점수 집계 프로그램

점수 집계 프로그램으로 조건문·반복문·리스트를 연결합니다. 유효 범위, 합격 경계, 빈 입력과 제외 개수를 확인하며 평균 계산을 검증합니다.

Python 강좌 / 문자열 다루기: 인덱싱·슬라이싱·메서드·f-string

Python 강좌 / 문자열 다루기: 인덱싱·슬라이싱·메서드·f-string

문자열의 인덱싱·슬라이싱과 strip·split·join·f-string을 익힙니다. 원본이 변경되지 않는 특성과 CSV·SQL 처리에서 구분할 점을 설명합니다.

Python 강좌 / 가상환경 만들기와 pip로 패키지 관리하기

Python 강좌 / 가상환경 만들기와 pip로 패키지 관리하기

venv로 프로젝트 환경을 분리하고 python -m pip로 패키지를 관리합니다. 활성화, 버전 기록, 재설치와 설치 환경 불일치 해결 기준을 익힙니다.

Python 강좌 / Windows에 Python 설치하고 실행 확인하기

Python 강좌 / Windows에 Python 설치하고 실행 확인하기

공식 Python Install Manager로 Windows 실행 환경을 준비합니다. 기존 설치 확인, 프로젝트용 가상환경 생성, 명령 충돌과 실행 경로 점검까지 설명합니다.

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

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

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

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

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

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