프롬프트
프롬프트 영역으로 마우스를 옮기고 Copy 버튼을 누르면 클립보드에 프롬프트의 내용이 복사됩니다.중첩 조건문을 사용하지 않고 로직을 구현할 수 있는 마이크로파이썬 프로그래밍 기법을 알려줘. 예제 코드 는 함수를 사용하지 말고 작성해 줘.
AI가 만든 결과
아래 예시는 중첩 조건문을 쓰지 않고 로직을 구현하는 대표적인 “테이블 기반 접근(Table-driven approach)” 기법의 예시입니다.
(함수 정의 없이, 한 블록 안에서만 구현합니다.)
아이디어: 테이블(리스트) 기반 접근
- 조건 범위와 결과 메시지를 리스트나 튜플 형태로 미리 정의합니다.
- 입력값을 순회하며, 각 범위에 들어맞는지 확인하고 해당 메시지를 선택합니다.
- 중첩 if 없이, 단일 for 루프와 if-check(혹은 다른 방식)로 분기 처리 가능합니다.
예제 코드
# 사용자로부터 온도를 입력받는다. temp = int(input('온도를 입력하세요... ')) # 1) (최솟값, 최댓값, 메시지)를 묶어서 정의 # 예: (low, high, msg)는 low <= temp < high 범위일 때 msg를 출력 range_table = [ (-99999, -10, "온도가 매우 낮습니다."), (-10, 0, "온도가 낮습니다."), (0, 20, "온도가 적당합니다."), (20, 30, "온도가 높습니다."), (30, 99999,"온도가 매우 높습니다.") ] # 2) 테이블 순회하면서 temp가 속하는 범위를 찾는다. msg = None # 메시지 저장용 변수 for low, high, text in range_table: if low <= temp < high: msg = text break # 3) 메시지를 찾았다면 출력 # (모든 범위에 해당하지 않는 경우는 여기선 없음) print(f'{temp}도 이면 {msg}')
코드 설명
테이블(range_table) 정의
- 각 튜플은
(최솟값, 최댓값, 메시지)
형태입니다. - 예:
(-99999, -10, "온도가 매우 낮습니다.")
는 “-99999 이상 -10 미만” 구간에 해당할 경우 메시지를 출력한다는 의미입니다. - 실제로는 (-∞) 같은 개념을 표현하기 위해
float('inf')
나 충분히 작은(큰) 정수를 사용해도 됩니다.
- 각 튜플은
테이블 순회
for low, high, text in range_table:
로 순회하면서,if low <= temp < high:
조건에 맞으면msg = text
를 저장하고break
로 반복을 끝냅니다.- 이렇게 하면 중첩 if 없이, 범위별 분기 처리를 깔끔하게 할 수 있습니다.
출력
- 찾은 메시지(
msg
)를print()
로 출력합니다.
- 찾은 메시지(
다른 기법 예시
if-elif-else로 나열:
- 예:
if temp < -10: msg = "온도가 매우 낮습니다." elif temp < 0: msg = "온도가 낮습니다." elif temp <= 20: msg = "온도가 적당합니다." elif temp <= 30: msg = "온도가 높습니다." else: msg = "온도가 매우 높습니다."
- 중첩은 아니지만, 조건 분기를 한 줄씩 나열하여 간단히 처리합니다.
- 예:
딕셔너리(혹은 맵)로 매핑:
- 온도 구간별 키를 잡기 까다롭지만, 특정 ‘단일 값 → 메시지’ 매핑일 경우엔 딕셔너리를 사용할 수도 있습니다.
정리
- 테이블 기반 접근은 범위·조건이 많아지더라도 한 곳에 정리해놓고 단일 루프로 처리하므로, 중첩 if를 줄이고 코드를 직관적으로 유지할 수 있습니다.
- 마이크로파이썬뿐 아니라 일반 파이썬, 임베디드 C 등 다양한 환경에서 조건 분기 로직을 간결화하는 데 활용되는 기법입니다.