[TIL] 26-03-04

2026. 3. 4. 15:54·TIL

TIL (Today I Learned) - 2026.03.04

Python 제어문, 반복문, 연산자 심화 학습


1. 부정 조건식으로 빈 컨테이너 체크하기

Python에서 빈 리스트, 빈 문자열, 0 같은 falsy 값은 조건문에서 False로 평가된다.
not을 활용하면 이를 간결하게 표현할 수 있다.

c = []

if not c:
    print("c에 멤버가 없습니다")
  • [] → falsy (False로 평가)
  • not [] → True
  • 0 → falsy, not 0 → True

포인트: if c == [] 또는 if len(c) == 0 보다 if not c가 Pythonic한 표현이다.


2. == vs is — 값 비교 vs 객체 비교

a = [1, 2, 3]
b = list(a)  # a를 복사하여 새 객체 생성

print(a == b)  # True  → 데이터 값이 같다
print(a is b)  # False → 서로 다른 객체 (메모리 주소가 다르다)

연산자 비교 대상 결과

== 값 (value) 같으면 True
is 객체 주소 (identity) 동일 객체면 True

주의: is는 None 체크(if x is None)에 주로 사용하고, 일반 값 비교에는 ==을 사용한다.


3. while True 무한루프와 탈출 조건

무한루프를 사용할 때는 반드시 break 탈출 조건이 필요하다.

while True:
    coffee_price = int(input("> 주문 총액을 입력하세요\n").strip())
    print(f"당신이 입력한 금액은 {coffee_price}입니다.")

    if not coffee_price:  # 0 입력 시 탈출 (0은 falsy)
        break

응용 예시 — 커피 결제 프로그램

customer_money = 5000

if coffee_price > customer_money:
    print(f"{coffee_price - customer_money}원이 부족합니다.")
elif coffee_price < customer_money:
    print(f"결제 완료. 잔액은 {customer_money - coffee_price}원입니다.")
    customer_money -= coffee_price
else:
    print("결제 완료. 잔액은 0원입니다.")
    customer_money -= coffee_price

4. 삼항 연산자 (Ternary Operator)

Python의 삼항 연산자는 한 줄로 조건에 따른 값을 할당할 수 있다.

# 기본 형태
변수 = 참일 때 값 if 조건식 else 거짓일 때 값

# 실제 사용 예시
msg = "구매 가능" if customer_money > coffee_price else "구매 불가"

팁: (조건식 and 참 or 거짓) 패턴도 있지만, 가독성이 좋은 if~else 형태를 권장한다.


5. 튜플 언패킹 (Tuple Unpacking)

반복문에서 튜플 데이터를 변수에 직접 분해하여 가독성을 높일 수 있다.

datas = [(1, 2), (3, 4), (5, 6)]

# 기본 방식
for data in datas:
    print(f"첫 번째값 {data[0]}, 두 번째값 {data[1]}")

# 언패킹 활용
for 온도, 습도 in datas:
    print(f"온도: {온도}, 습도: {습도}")

# 특정 값만 필요할 때 → _ 로 불필요한 변수 무시
for _, 습도 in datas:
    print(f"습도: {습도}")

6. 딕셔너리 리스트 순회

ktx_stations = [
    {"name": "광명역", "age": 30},
    {"name": "영등포역", "age": 70},
]

for ktx_station in ktx_stations:
    print(f'{ktx_station["name"]}의 년식은 {ktx_station["age"]}년')

7. enumerate() — 인덱스와 함께 순회

enumerate()는 반복 시 자동으로 인덱스를 부여한다.

for index, (k, v) in enumerate(ktx_station.items()):
    print(index, k, v)

# 출력 예시:
# 0 name 광명역
# 1 age 30

8. 중첩 for문 — 구구단 구현

포맷 지정자 :>2

print(f"{값:>2}")  # 오른쪽 정렬, 2자리 폭

구구단 조건 필터링 예제

요구사항

  • 3~6단 출력
  • 5단 제외
  • 3×3, 4×4, 6×6 제외
# 처음 작성한 코드
for i in range(3, 7):
    if i == 5:
        pass
    else:
        for j in range(1, 10):
            if i == j == 3 or i == j == 4 or i == j == 6:
                pass
            else:
                print(f"{i} * {j} = {i*j}")
# 리팩토링 — 부정 조건으로 더 간결하게
for i in range(3, 7):
    if i != 5:                     # 5단 제외
        for j in range(1, 10):
            if i != j:             # i == j인 경우(3×3, 4×4, 6×6) 제외
                print(f"{i} * {j} = {i*j:>2}")

배운 점: pass를 쓰는 if 예외조건 패턴보다, if 정상조건으로 조건을 반전시키면 코드가 훨씬 간결해진다.


오늘의 핵심 정리

개념 요약

not c falsy 값(빈 리스트, 0 등) 체크
== vs is 값 비교 vs 객체 동일성 비교
while True + break 무한루프 탈출 조건 필수
삼항 연산자 값 if 조건 else 값
튜플 언패킹 for a, b in list
enumerate() 인덱스 자동 부여
포맷 :>2 오른쪽 정렬, 2자리 너비

 

'TIL' 카테고리의 다른 글

[API] 기상청 API 이용방법  (0) 2026.03.08
[TIL] 26-03-05  (0) 2026.03.05
'TIL' 카테고리의 다른 글
  • [API] 기상청 API 이용방법
  • [TIL] 26-03-05
byhy0
byhy0
byhy0 님의 블로그 입니다.
  • byhy0
    byhy0 님의 블로그
    byhy0
  • 전체
    오늘
    어제
    • 분류 전체보기 (62)
      • T아카데미 (4)
      • Project (2)
      • Airflow (4)
      • Python (16)
        • Django (0)
      • Java (1)
      • Spring (4)
        • Board Project (3)
      • SQL (3)
      • Docker (1)
      • 클라우드 (2)
      • Error (3)
      • Git (5)
      • 코딩테스트 (12)
        • SQL (5)
        • Python (7)
      • TIL (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    push #pull #git연동
    Git #설치법
    git #github #repository 생성
    programmers # 코딩테스트 #sql
    programmers #SQL #코딩테스트
    T아카데미#SK플래닛#데이터엔지니어2기
    오블완
    Spring
    vscode #git #git연동법
    #클라우드 #클라우드컴퓨팅 #CloudComputing #온프레미스 #CS기초 #IT인프라 #서버
    게시판
    venv #파이썬 가상환경 #가상환경
    T아카데미 #면접 #데이터 엔지니어 #K-Digital Traning
    API 요청 #API
    #Python #정규표현식 #Regex #웹크롤링 #데이터처리
    BigQuery #SQL
    T아카데미 #2주차 회고 #데이터 엔지니어 2기
    python #pytest #테스트
    T아카데미 #SK플래닛 #회고 #1주차
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
byhy0
[TIL] 26-03-04
상단으로

티스토리툴바