22 — 터미널 메뉴 — 작은 TUI
TUI(text user interface)는 키보드로 조종하는 메뉴입니다. 예제
examples/terminal-menu.ko.nme는 선택지 세 개를 보여 주고, 답을 기다리고,
고른 일을 하고, 다시 메뉴를 보여 줍니다. 이 프로젝트는 학습용입니다.
실행하고 답 두 개를 넣어 보세요 — 1은 인사하고, 3은 종료합니다.
첫 답 뒤에 반복이 메뉴로 돌아가므로 메뉴가 두 번 보입니다:
printf '1\n3\n' | nme 실행 examples/terminal-menu.ko
1) 인사
2) 주사위
3) 종료
고르세요: 안녕하세요!
1) 인사
2) 주사위
3) 종료
고르세요: 안녕히 가세요
단계
use random latest줄이 주사위 함수를 불러오고, 글자 값이 메뉴를 담습니다.\n은 "새 줄"입니다 — 한 문자열이 세 줄이 되는 이유입니다:
실행해 보기 →# examples/terminal-menu.ko.nme의 일부 use random latest menu = "1) 인사\n2) 주사위\n3) 종료"while True:는 끝없는 반복을 만들고,show menu가 선택지를 출력하며ask 선택, "고르세요: "가 답을 저장합니다:
실행해 보기 →# examples/terminal-menu.ko.nme의 일부 while True: show menu ask 선택, "고르세요: "블록은 들여쓰기로 시작하며 Python과 똑같습니다.
06 가이드의
if/elif/else가 답마다 한 갈래를 실행합니다. 순수 Python 헤더if 선택 == "1":가 NME 줄show/break와 같은 블록 안에 자유롭게 섞입니다:
실행해 보기 →# examples/terminal-menu.ko.nme의 일부 while True: show menu ask 선택, "고르세요: " if 선택 == "1": show "안녕하세요!" elif 선택 == "2": show random_number(1, 6) else: show "안녕히 가세요" breakshow random_number(1, 6)은 그 자리에서 10 가이드의 주사위를 굴립니다. 다른 답은else로 떨어져 "안녕히 가세요"를 출력하고break로 반복을 떠납니다 —while True:에서 나가는 유일한 길입니다.nme 검사는 반복을 실행하지 않고 문법만 확인합니다:nme 검사 examples/terminal-menu.ko영어 쌍둥이
examples/terminal-menu.nme는 같은while True:반복에ask choice, "choose: "를 씁니다.nme 실행 examples/terminal-menu로 실행하고 같은 숫자를 고르면 영어로 같은 흐름이 나옵니다.
직접 해보기
menu에 4) 동전 줄을 추가하고, elif 선택 == "4": 갈래를 새로 만들어
두 면 중 무작위로 고른 쪽을 보여 주세요 — 10 가이드에
방법이 있습니다. break는 그대로 작동하고, 다른 숫자는 갈래만 하나
늘어납니다.
배운 것
while True:는 영원히 반복하며break가 나가는 길입니다.- 메뉴는 보여 주기 → 물어보기 → 갈라지기 → 다시 반복입니다.
show/askNME 줄이 순수 Pythonif 선택 == "1":헤더와 섞입니다.- 문자열 안의
\n은 새 줄을 만듭니다.