needmoreeasy EN 한국어
배우기

NME 학습 가이드

짧은 가이드 88편입니다. 앞에서부터 순서대로 읽도록 만들었고, 뒤로 갈수록 조금씩 어려워집니다. 각 편은 한 가지를 가르치고, 마지막에 직접 해 볼 것과 배운 것을 정리합니다. 코드는 모두 nme 검사로 확인할 수 있습니다.

  • 01–04 첫날. 문장형만 씁니다. 따옴표도 등호도 콜론도 나오지 않습니다.
  • 05–12 반복·조건·랜덤과 명령줄 도구.
  • 86–88 이야기·화면·시간 재기·쿨타임. 이것도 문장형입니다. 맨 뒤가 아니라 12 다음에 읽으세요. 번호가 큰 것은 나중에 쓴 편이기 때문입니다.
  • 13–22 파일·JSON·작은 프로젝트·블록체인·네트워크. 초급 문법이 섞이기 시작합니다.
  • 23–52 모듈·게임·계산기·데이터·문자열·격자. Python이 절반을 넘어갑니다.
  • 53–85 통계·검색·알고리즘·컴파일러. 사실상 Python 프로그램입니다.

난이도

  • ★☆☆☆☆ (1/5) — 첫날, 문장형만
  • ★★☆☆☆ (2/5) — 문장형에 익숙해지는 단계
  • ★★★☆☆ (3/5) — 초급 문법과 파일을 섞는 단계
  • ★★★★☆ (4/5) — Python이 절반을 넘는 단계
  • ★★★★★ (5/5) — 거의 Python

번호는 대체로 난이도 순서입니다. 다만 86–88은 나중에 더한 문장형 편이라 번호는 크지만 난이도는 ★★입니다. 05~12를 읽은 뒤 이어서 읽으면 됩니다.

순서대로 배우기

  1. 01 — 인사: 첫 문장 말하기
  2. 02 — 물어보기: 대화 나누기
  3. 03 — 저장: 값 넣어 두기
  4. 04 — 변경: 값 바꾸기
  5. 05 — 반복: 여러 번 반복하기
  6. 06 — 조건: 갈림길 선택
  7. 07 — 동안: 조건이 참인 동안 반복
  8. 08 — 멈춤: 반복 멈추기
  9. 09 — 그리고/또는: 조건 합치기
  10. 10 — 랜덤: 주사위와 선택
  11. 11 — 확인과 빌드: Python 보기
  12. 12 — 변환: Python을 NME로
  13. 13 — 파일: 글 저장하고 읽기
  14. 14 — JSON: 데이터 저장하고 불러오기
  15. 15 — 최고 점수: 작은 프로젝트
  16. 16 — 이름 목록: 파일에서 줄 읽기
  17. 17 — 암호화폐 장부 — 상태와 거래
  18. 18 — 작업증명 — 거래를 블록으로 채굴하기
  19. 19 — 거래 증명 — 지갑 소유와 재전송 방지
  20. 20 — 전체 사슬 검증 — 처음부터 다시 계산하기
  21. 21 — HTTP — 웹 서버에 물어보기
  22. 22 — 터미널 메뉴 — 작은 TUI
  23. 23 — 모듈: 프로그램을 여러 파일로 나누기
  24. 24 — Python 패키지: 표준 라이브러리와 설치된 라이브러리
  25. 25 — 네이티브: 기계어로 컴파일하기
  26. 26 — 모험 — 작은 텍스트 게임
  27. 27 — 계산기 — 명령줄 프로젝트
  28. 28 — 첫 컴파일러 — 아주 작은 언어
  29. 29 — 부트스트랩: NME가 아주 작은 언어를 컴파일
  30. 30 — 데이터: 목록 통계
  31. 31 — 기록: 작은 주소록
  32. 32 — 날씨: 웹에서 JSON 읽기
  33. 33 — 할 일: 커지는 프로젝트
  34. 34 — 셀프호스트: NME가 NME를 실행
  35. 35 — 일기: 날짜별 메모
  36. 36 — 단어 세기: 단어 빈도
  37. 37 — 단어 맞히기: 숨은 단어 게임
  38. 38 — 퀴즈 — 파일의 문제
  39. 39 — 정렬 — 목록 순서 정하기
  40. 40 — 보고서 — 요약 파일 쓰기
  41. 41 — 텍스트 통계: 글자와 단어
  42. 42 — 비교: 두 숫자 묶음
  43. 43 — 프로젝트: 습관 체크
  44. 44 — 플레이리스트: 랜덤 음악 재생
  45. 45 — CSV: 데이터 행
  46. 46 — 컴파일러: 표현식 언어
  47. 47 — 진행 — 터미널 진행 막대
  48. 48 — 상점 — 재고 관리
  49. 49 — 컴파일러: 토큰 읽기
  50. 50 — 문자열: 텍스트 자르고 바꾸기
  51. 51 — 격자: 목록의 판
  52. 52 — 게임: 틱택토
  53. 53 — 집합: 중복 없는 값
  54. 54 — 통계: 데이터 이해
  55. 55 — 네트워크: 미니 채팅
  56. 56 — 기록: 사건 기록
  57. 57 — 묶기: 범주별 데이터
  58. 58 — 컴파일러: 작은 바이트코드 실행기
  59. 59 — 편집기 — 아주 작은 텍스트 에디터
  60. 60 — 검색 — JSON에서 찾기
  61. 61 — 프로젝트 — 미니 은행
  62. 62 — 버블 정렬 — 첫 알고리즘
  63. 63 — 아스키 아트 — 문자로 그리기
  64. 64 — 이진 탐색 — 절반씩 찾기
  65. 65 — 파일: 여러 파일 처리
  66. 66 — 상위 열: 기록 순위
  67. 67 — 프로젝트 — 성적부
  68. 68 — 예외: 문제 다루기
  69. 69 — 정규식: 패턴 찾기
  70. 70 — 게임: 반응 속도 측정
  71. 71 — 차트: 터미널 막대 그래프
  72. 72 — 모듈: 여러 파일 프로젝트
  73. 73 — 캡스톤: Python으로 컴파일하는 언어
  74. 74 — 병합: 두 목록 합치기
  75. 75 — 게임: 간단한 상대
  76. 76 — 네트워크: 서버 폴링
  77. 77 — 네트워크: 파일 받아 저장하기
  78. 78 — 데이터: 한 달 온도 분석하기
  79. 79 — 컴파일러: 미니 언어에 함수 넣기
  80. 80 — 도구: 명령 줄에서 말 받기
  81. 81 — 테스트: 내가 쓴 함수 확인하기
  82. 82 — 컴파일러: 식을 트리로 만들기
  83. 83 — 게임: 비밀 코드 맞히기 (마스터마인드)
  84. 84 — 웹: 페이지에서 링크 뽑아내기
  85. 85 — 컴파일러: 트리에서 바이트코드로
  86. 86 — 이야기: 글자가 하나씩 나오게 하기
  87. 87 — 화면: 지우고, 줄 긋고, 상자에 담기
  88. 88 — 시간: 재기와 쿨타임

주제별 찾아보기

  • 첫 프로그램과 출력: 01
  • 입력: 02
  • 값 저장: 03
  • 값 변경: 04
  • 반복: 05, 08
  • 조건: 06, 09
  • 반복과 조건: 07
  • 랜덤: 10
  • 도구 사용: 11, 12
  • 파일: 13, 35
  • JSON: 14
  • 프로젝트: 15, 27, 33, 43, 48, 61, 67
  • 파일과 목록: 16
  • 암호화폐 장부와 거래: 17
  • 작업증명과 블록 연결: 18
  • 거래 증명과 재전송 방지: 19
  • 사슬 검증과 합의의 경계: 20
  • 네트워크와 HTTP: 21
  • 터미널 메뉴: 22
  • 모듈: 23
  • Python 패키지: 24
  • 네이티브 컴파일: 25
  • 대형 프로젝트: 26
  • 컴파일러: 28, 46, 49, 58
  • 부트스트랩: 29
  • 데이터: 30, 36, 39, 45, 57
  • 데이터/기록: 31
  • 네트워크/데이터: 32
  • 셀프호스팅: 34
  • 게임: 37, 52
  • 게임/데이터: 38
  • 파일/프로젝트: 40
  • 텍스트/데이터: 41
  • 데이터/비교: 42
  • 게임/랜덤: 44
  • TUI/출력: 47
  • 문자열: 50
  • 중첩 데이터: 51
  • 집합/데이터: 53
  • 통계/데이터: 54
  • 네트워크: 55
  • 파일/기록: 56
  • TUI/터미널 앱: 59
  • 검색/데이터: 60
  • 알고리즘: 62, 64
  • 출력/루프: 63
  • 파일/폴더: 65
  • 데이터/순위: 66
  • 예외: 68
  • 정규식: 69
  • 게임/시간: 70
  • 시각화/출력: 71
  • 모듈/구조: 72
  • 컴파일러/캡스톤: 73
  • 데이터/병합: 74
  • 게임/전략: 75
  • 네트워크/시간: 76
  • 네트워크/파일: 77
  • 데이터 분석: 78
  • 컴파일러/함수: 79
  • CLI 도구: 80
  • 테스트: 81
  • 컴파일러/AST: 82
  • 게임/논리: 83
  • 웹/텍스트: 84
  • 컴파일러/바이트코드: 85
  • 이야기/천천히 출력: 86
  • 화면 꾸미기: 87
  • 시간 재기/쿨타임: 88

전체 목록

번호난이도주제제목결과물
01★☆☆☆☆첫 프로그램과 출력인사: 첫 문장 말하기nme 실행으로 메시지를 출력하는 프로그램
02★☆☆☆☆입력물어보기: 대화 나누기이름을 물어보고 문장으로 인사하는 프로그램
03★☆☆☆☆값 저장과 목록저장: 값 넣어 두기글자·숫자·목록을 이름 붙여 저장하는 프로그램
04★☆☆☆☆값 변경변경: 값 바꾸기점수에 더하고 빼는 프로그램
05★★☆☆☆반복·목록 반복·기다리기반복: 여러 번 반복하기줄을 여러 번 실행하고, 목록을 하나씩 지나가고, 잠깐 쉬는 프로그램
06★★☆☆☆조건조건: 갈림길 선택조건에 따라 다른 줄을 실행하는 프로그램
07★★☆☆☆반복과 조건동안: 조건이 참인 동안 반복조건이 참인 동안 반복하는 블록
08★★☆☆☆반복멈춤: 반복 멈추기반복을 일찍 끝내는 프로그램
09★★☆☆☆조건그리고/또는: 조건 합치기조건을 합쳐 판단하는 프로그램
10★★☆☆☆랜덤랜덤: 주사위와 선택주사위를 굴리고 색을 고르는 프로그램
11★★☆☆☆도구 사용확인과 빌드: Python 보기프로그램을 확인하고 생성된 Python을 읽는 습관
12★★☆☆☆도구 사용변환: Python을 NME로작은 Python 파일을 NME로 변환하기
13★★★☆☆파일파일: 글 저장하고 읽기글을 파일에 저장하고 다시 읽는 프로그램
14★★★☆☆JSONJSON: 데이터 저장하고 불러오기이름과 점수를 저장하고 불러오는 프로그램
15★★★☆☆프로젝트최고 점수: 작은 프로젝트최고 점수를 기억하는 주사위 게임
16★★★☆☆파일과 목록이름 목록: 파일에서 줄 읽기파일에서 이름 목록을 읽어 고르는 프로그램
17★★★☆☆암호화폐 장부와 거래암호화폐 장부 — 상태와 거래잔액·거래번호·수수료·발행량을 검증하는 작은 암호화폐 상태 장부
18★★★☆☆작업증명과 블록 연결작업증명 — 거래를 블록으로 채굴하기이전 블록 해시와 거래를 묶어 SHA-256 작업증명 블록 만들기
19★★★☆☆거래 증명과 재전송 방지거래 증명 — 지갑 소유와 재전송 방지공개값으로 거래 승인자를 검증하고 같은 거래의 재사용을 거부하기
20★★★☆☆사슬 검증과 합의의 경계전체 사슬 검증 — 처음부터 다시 계산하기창세 상태부터 모든 거래와 블록을 재실행하는 단일 노드 검증기
21★★★☆☆네트워크와 HTTPHTTP — 웹 서버에 물어보기로컬 서버에서 페이지를 가져오기
22★★★☆☆터미널 메뉴터미널 메뉴 — 작은 TUI반복으로 움직이는 터미널 메뉴
23★★★★☆모듈모듈: 프로그램을 여러 파일로 나누기프로그램을 여러 .nme 파일로 나누기
24★★★★☆Python 패키지Python 패키지: 표준 라이브러리와 설치된 라이브러리표준 라이브러리와 설치된 라이브러리 사용하기
25★★★★☆네이티브 컴파일네이티브: 기계어로 컴파일하기CPython 없이 기계어로 실행하기
26★★★★☆대형 프로젝트모험 — 작은 텍스트 게임방을 이동하며 고르는 텍스트 모험
27★★★★☆프로젝트계산기 — 명령줄 프로젝트함수와 모듈 파일로 계속 물어보는 계산기
28★★★★☆컴파일러첫 컴파일러 — 아주 작은 언어add 2 3 같은 줄을 읽고 답을 출력하는 아주 작은 언어
29★★★★☆부트스트랩부트스트랩: NME가 아주 작은 언어를 컴파일NME로 쓴 미니 컴파일러
30★★★★☆데이터데이터: 목록 통계JSON 파일에서 숫자를 불러와 표준 라이브러리 statistics로 평균·중앙값·최댓값 구하기
31★★★★☆데이터/기록기록: 작은 주소록연락처를 추가·목록·검색하는 JSON 파일 주소록
32★★★★☆네트워크/데이터날씨: 웹에서 JSON 읽기로컬 HTTP 서버의 JSON을 가져와 미니 날씨 보고서 출력하기
33★★★★☆프로젝트할 일: 커지는 프로젝트add, done, list를 지원하고 저장 로직을 모듈 파일로 둔 JSON 저장 할 일 목록
34★★★★☆셀프호스팅셀프호스트: NME가 NME를 실행say/set/while로 된 아주 작은 NME형 부분집합을 Python으로 컴파일하는 NME 프로그램
35★★★★☆파일일기: 날짜별 메모각 날의 메모를 날짜별 파일에 저장하고 다시 읽는 일기
36★★★★☆데이터단어 세기: 단어 빈도텍스트 파일을 읽어 단어가 각각 몇 번 나오는지 세는 프로그램
37★★★★☆게임단어 맞히기: 숨은 단어 게임제한된 기회 안에 숨은 단어의 글자를 맞히는 행맨형 게임
38★★★★☆게임/데이터퀴즈 — 파일의 문제JSON 파일에서 문제를 불러와 채점하고 결과를 알려 주는 객관식 퀴즈
39★★★★☆데이터정렬 — 목록 순서 정하기JSON 파일에서 숫자를 불러와 Python sort로 오름차순·내림차순 순서를 보여 주는 프로그램
40★★★★☆파일/프로젝트보고서 — 요약 파일 쓰기JSON 데이터 파일 몇 개를 읽어 file_write로 요약 보고서 하나를 쓰는 프로그램
41★★★★☆텍스트/데이터텍스트 통계: 글자와 단어텍스트 파일을 읽어 글자 수, 단어 수, 가장 긴 단어, 가장 흔한 단어를 보고하는 프로그램
42★★★★☆데이터/비교비교: 두 숫자 묶음두 JSON 숫자 목록을 불러와 평균과 최댓값을 비교하는 프로그램
43★★★★☆프로젝트프로젝트: 습관 체크add, check, streak, list, quit를 지원하고 저장 로직을 모듈 파일로 둔 JSON 저장 습관 추적기
44★★★★☆게임/랜덤플레이리스트: 랜덤 음악 재생JSON에서 불러온 플레이리스트에 셔플·다음 곡·반복 재생을 더한 프로그램
45★★★★☆데이터CSV: 데이터 행쉼표로 나뉜 텍스트 파일을 split(",")로 읽고 한 열의 평균을 구해 요약 CSV를 쓰기
46★★★★☆컴파일러컴파일러: 표현식 언어2 + 3 * 4를 연산자 우선순위에 맞게 계산하는 아주 작은 계산기
47★★★★☆TUI/출력진행 — 터미널 진행 막대반복이 돌면서 한 줄을 채우는 터미널 진행 막대
48★★★★☆프로젝트상점 — 재고 관리사고팔고 재고를 확인하며 잔액이 남는 JSON 저장 상점
49★★★★☆컴파일러컴파일러: 토큰 읽기명령 줄을 토큰으로 나누고 실행을 보내는 프로그램
50★★★★☆문자열문자열: 텍스트 자르고 바꾸기문장에서 text[start:end] 자르기와 .upper()/.lower(), .replace(), .strip()
51★★★★☆중첩 데이터격자: 목록의 판목록의 목록으로 만든 3x3 판, board[row][col]로 칸 읽고 쓰기
52★★★★☆게임게임: 틱택토승리 확인이 있는 두 명이 하는 틱택토
53★★★★★집합/데이터집합: 중복 없는 값Python 집합으로 텍스트 파일의 고유 단어와 문장의 고유 글자 찾기
54★★★★★통계/데이터통계: 데이터 이해JSON 숫자 목록에서 count·평균·중앙값·최빈값·최소·최대·범위 보고하기
55★★★★★네트워크네트워크: 미니 채팅로컬 HTTP 서버에서 메시지를 받아 미니 채팅처럼 보여 주기
56★★★★★파일/기록기록: 사건 기록프로그램이 실행될 때마다 datetime과 file_write로 로그 파일에 날짜 줄을 덧붙이기
57★★★★★데이터묶기: 범주별 데이터범주 키로 dict 목록을 목록들의 dict로 묶고, 범주별 개수를 보고하기
58★★★★★컴파일러컴파일러: 작은 바이트코드 실행기간단한 명령을 단계 목록으로 컴파일하고 가상 머신처럼 한 단계씩 실행하기
59★★★★★TUI/터미널 앱편집기 — 아주 작은 텍스트 에디터버퍼를 두고 줄을 추가·삭제·목록·저장하는 줄 단위 에디터
60★★★★★검색/데이터검색 — JSON에서 찾기로컬 서버나 파일에서 JSON 목록을 불러와 대소문자 구분 없이 검색하기
61★★★★★프로젝트프로젝트 — 미니 은행입금·출금·잔액·거래 내역을 모듈로 저장하는 JSON 은행 계좌
62★★★★★알고리즘버블 정렬 — 첫 알고리즘중첩 반복과 맞바꿈으로 버블 정렬을 직접 구현하고 Python 내장 정렬과 결과를 비교하는 프로그램
63★★★★★출력/루프아스키 아트 — 문자로 그리기중첩 반복과 문자열 곱셈으로 직각 삼각형, 거꾸로 삼각형, 마름모를 그리는 프로그램
64★★★★★알고리즘이진 탐색 — 절반씩 찾기정렬된 목록에서 목표 숫자를 매 단계 탐색 범위를 절반으로 줄이며 찾고, 단계 수까지 보여 주는 프로그램
65★★★★★파일/폴더파일: 여러 파일 처리폴더의 파일을 나열해 각각 읽고 전체 단어·글자 수를 보고하는 프로그램
66★★★★★데이터/순위상위 열: 기록 순위JSON 기록을 불러와 숫자 점수 기준으로 정렬하고 상위 열 개를 보여 주는 프로그램
67★★★★★프로젝트프로젝트 — 성적부학생 추가·성적 추가·평균 보고를 저장 모듈과 함께 두는 JSON 성적부
68★★★★★예외예외: 문제 다루기없는 파일을 읽거나 숫자가 아닌 입력을 바꿔도 멈추지 않는 프로그램
69★★★★★정규식정규식: 패턴 찾기텍스트 파일에서 전화번호와 이메일을 찾는 프로그램
70★★★★★게임/시간게임: 반응 속도 측정time.time()으로 반응 속도를 재고 여러 라운드의 최고 기록을 알려 주는 게임
71★★★★★시각화/출력차트: 터미널 막대 그래프JSON 목록에서 가장 큰 값에 맞춘 # 블록으로 가로 막대 그래프를 그리는 프로그램
72★★★★★모듈/구조모듈: 여러 파일 프로젝트fetch·analyze·report 세 .nme 모듈로 나누고 주 프로그램이 가져오는 작은 날씨 보고서 프로젝트
73★★★★★컴파일러/캡스톤캡스톤: Python으로 컴파일하는 언어아주 작은 언어(say/set/add/while/end)를 읽어 Python 소스로 컴파일하고 파일로 저장한 뒤 실행하는 NME 프로그램
74★★★★★데이터/병합병합: 두 목록 합치기두 JSON 목록을 이름 키로 합쳐 결합 보고서 만들기
75★★★★★게임/전략게임: 간단한 상대돌을 1-3개 가져가며 마지막 돌이 지는 Nim 게임에서 컴퓨터가 전략으로 대응하기
76★★★★★네트워크/시간네트워크: 서버 폴링로컬 서버의 status.json을 몇 초마다 다시 받아 변화를 보고하기
77★★★★★네트워크/파일네트워크: 파일 받아 저장하기로컬 HTTP 서버에서 파일을 받아 진행 상황을 보여 주며 저장하기
78★★★★★데이터 분석데이터: 한 달 온도 분석하기한 달치 온도를 읽어 통계와 히스토그램을 계산하고 보고서 파일로 저장하기
79★★★★★컴파일러/함수컴파일러: 미니 언어에 함수 넣기def/return/호출을 가진 미니 언어를 Python으로 컴파일하고 실행하는 컴파일러
80★★★★★CLI 도구도구: 명령 줄에서 말 받기nme 실행 todo add "buy milk"처럼 명령 줄에서 말을 받아 동작하는 할 일 도구
81★★★★★테스트테스트: 내가 쓴 함수 확인하기자기 함수를 예상값과 비교해 통과·실패를 보고하는 작은 테스트 실행기
82★★★★★컴파일러/AST컴파일러: 식을 트리로 만들기식을 트리로 파싱하고 재귀로 평가해 우선순위를 지키는 계산기
83★★★★★게임/논리게임: 비밀 코드 맞히기 (마스터마인드)4가지 색의 비밀 코드를 맞히고 검정·하양 단서로 좁혀 가는 마스터마인드
84★★★★★웹/텍스트웹: 페이지에서 링크 뽑아내기로컬 서버의 HTML 페이지를 받아 그 안의 링크를 모두 찾아 절대 주소로 보여 주기
85★★★★★컴파일러/바이트코드컴파일러: 트리에서 바이트코드로식 트리를 납작한 명령 목록으로 컴파일하고 스택 가상 머신으로 실행하는 컴파일러
86★★☆☆☆이야기/천천히 출력이야기: 글자가 하나씩 나오게 하기소설처럼 글자가 하나씩 나타나는 프로그램
87★★☆☆☆화면 꾸미기화면: 지우고, 줄 긋고, 상자에 담기화면을 지우고, 제목을 가운데에 놓고, 상자로 감싸는 프로그램
88★★☆☆☆시간 재기/쿨타임시간: 재기와 쿨타임걸린 시간을 재고, 정해진 시간 동안 다시 못 하게 막는 프로그램

다음 단계

  • 시작하기: 인사부터 숫자 게임까지 5분 길
  • 학습 과정: Hello World부터 컴파일러까지 일곱 프로젝트
  • 문법 안내: 세 단계의 정확한 규칙
  • 문법 목록: 쓸 수 있는 모든 표기를 한 표에 모은 목록
  • AI에게 건네는 프롬프트: 대화창에 붙여넣으면 AI가 NME를 쓸 수 있게 되는 글
  • 설치가 어렵다면 needmoreeasy.com 에서 바로 써 볼 수 있습니다. 휴대폰에서도 됩니다.

가이드 88편 전체

가이드 88편