• Skip to primary navigation
  • Skip to main content

IoTmaker

사물인터넷에 대한 모든 것 여기서 해결하셔요!

  • 홈
  • 책:마이크로파이썬을 활용한 사물인터넷
  • 책:따라 하면서 배우는 사물인터넷
  • 온라인 교육 코스
  • 새로운 소식
  • 의견보내기
  • 내 수강정보
  • 로그인
  • 회원가입

AI 프롬프트 활용 4-5: 중첩 조건문을 사용하지 않는 마이크로파이썬 프로그래밍 기법

마이크로파이썬 > AI 프롬프트

프롬프트

  프롬프트 영역으로 마우스를 옮기고 Copy 버튼을 누르면 클립보드에 프롬프트의 내용이 복사됩니다.
중첩 조건문을 사용하지 않고 로직을 구현할 수 있는 마이크로파이썬 프로그래밍 기법을 알려줘. 예제 코드
는 함수를 사용하지 말고 작성해 줘.

AI가 만든 결과

아래 예시는 중첩 조건문을 쓰지 않고 로직을 구현하는 대표적인 “테이블 기반 접근(Table-driven approach)” 기법의 예시입니다.
(함수 정의 없이, 한 블록 안에서만 구현합니다.)


아이디어: 테이블(리스트) 기반 접근

  1. 조건 범위와 결과 메시지를 리스트나 튜플 형태로 미리 정의합니다.
  2. 입력값을 순회하며, 각 범위에 들어맞는지 확인하고 해당 메시지를 선택합니다.
  3. 중첩 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}')

코드 설명

  1. 테이블(range_table) 정의

    • 각 튜플은 (최솟값, 최댓값, 메시지) 형태입니다.
    • 예: (-99999, -10, "온도가 매우 낮습니다.")는 “-99999 이상 -10 미만” 구간에 해당할 경우 메시지를 출력한다는 의미입니다.
    • 실제로는 (-∞) 같은 개념을 표현하기 위해 float('inf')나 충분히 작은(큰) 정수를 사용해도 됩니다.
  2. 테이블 순회

    • for low, high, text in range_table:로 순회하면서, if low <= temp < high: 조건에 맞으면 msg = text를 저장하고 break로 반복을 끝냅니다.
    • 이렇게 하면 중첩 if 없이, 범위별 분기 처리를 깔끔하게 할 수 있습니다.
  3. 출력

    • 찾은 메시지(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 등 다양한 환경에서 조건 분기 로직을 간결화하는 데 활용되는 기법입니다.

Copyright © 2025 ·로그인