프롬프트
프롬프트 영역으로 마우스를 옮기고 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 등 다양한 환경에서 조건 분기 로직을 간결화하는 데 활용되는 기법입니다.