NME 문법 목록
NME가 실제로 받아들이는 표기를 빠짐없이 모아 둔 목록입니다. 설명이 필요하면 문법 안내를 보세요. 이 문서는 예제 모음이 아니라 표입니다.
이 파일은 컴파일러 소스에서 자동으로 만들어집니다
(python scripts/build-syntax-reference.py). 컴파일러가 받아들이는 표기가 여기에
빠져 있으면 검사가 실패하므로, 목록과 구현이 어긋날 수 없습니다.
읽는 법
- 단계는 셋입니다. 문장형은 따옴표·쉼표·괄호·등호·콜론이 없는 말이고, 초급은 짧고 정확한 표기이며, 고급은 그냥 Python입니다. 선언 없이 한 파일, 한 줄 안에서 섞어 쓸 수 있습니다.
- 한 줄은 Python이 먼저입니다. 어떤 줄이든 올바른 Python이면 NME는 손대지
않습니다. 그래서 낱말 하나짜리 줄(
skip,멈춰)은 Python 이름으로 남고, 반복 블록 안에서만 NME 명령이 됩니다. - 모든 NME 문장은 Python 한 줄이 됩니다. 줄 수가 변하지 않으므로 오류 메시지의 줄 번호가 내가 쓴 파일과 정확히 맞습니다.
- 표의
만들어지는 Python은 컴파일러가 내놓는 글자 그대로입니다.
1. 출력
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 안녕하세요! 말해줘 | print("안녕하세요!") |
| 문장형 | 보여줘 안녕하세요 | print("안녕하세요") |
| 문장형 | 오늘도 반가워요! | print("오늘도 반가워요!") |
| 문장형 | 안녕하세요 이름! 말해줘 | print("안녕하세요 " + str(이름) + "!") |
| 초급 | 말해 "안녕" | print("안녕") |
| 초급 | 말해 총합 + 1 | print(총합 + 1) |
| 고급 | print("안녕") | unchanged |
글이 되는가, 코드가 되는가. 동작 단어 뒤가 올바른 Python 표현식이고 그 안의
이름을 프로그램이 이미 알고 있으면 코드로, 그렇지 않으면 글로 다룹니다.
말해와 say만은 반대로, 표현식을 먼저 시도합니다. 앞에서 만든 이름이 글 안에
있으면 그 자리에 값이 들어갑니다(안녕하세요 이름! → "안녕하세요 " + str(이름) + "!").
⚠ 이것은 낱말이 이름과 같기만 하면 일어납니다. 사기라는 이름을 만들어 두면
동료들과 식사해 사기가 올랐습니다 말해줘가 "동료들과 식사해 " + str(사기) + "가 올랐습니다"가 됩니다. 조건에서도 마찬가지라, 수호룬이라는 참/거짓 이름이 있으면
만약에 선택이 수호룬과 같으면은 글자 "수호룬"이 아니라 그 값과 견줍니다.
글자라는 것을 밝히려면 따옴표로 감싸면 됩니다. 따옴표 안의 것은 이름이 있어도 그대로 글자입니다.
"동료들과 식사해 사기가 올랐습니다" 말해줘 → 그대로 나옵니다
만약에 선택이 "수호룬"과 같으면 → 글자와 견줍니다
가장 편한 방법은 이름을 산문에 나오지 않을 모양으로 짓는 것입니다 —
사기 대신 전의, 수호룬 대신 수호룬보유여부. 짧고 흔한 낱말일수록 위험합니다.
2. 입력
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 이름을 물어봐 이름이 뭐예요? | 이름 = input("이름이 뭐예요?" + " ") |
| 문장형 | 나이를 숫자로 물어봐 몇 살이에요? | 나이 = int(input("몇 살이에요?" + " ")) |
| 문장형 | 이름이 뭐예요? | 이름 = input("이름이 뭐예요?" + " ") |
| 문장형 | 몇 살이에요? | 나이 = int(input("몇 살이에요?" + " ")) |
| 문장형 | 이름을 물어봐 | 이름 = input() |
| 초급 | 물어봐 이름, "이름? " | 이름 = input("이름? ") |
| 고급 | 이름 = input() | unchanged |
숫자로/ask number를 붙이면 int(input(...))이 됩니다. 나이나 개수를 묻는
질문(몇 살이에요?, How old are you?)은 붙이지 않아도 숫자로 읽습니다.
질문 뒤에 공백이 없으면 하나 붙여 줍니다.
3. 값 저장
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 인사는 안녕하세요 | 인사 = "안녕하세요" |
| 문장형 | 정답은 7 | 정답 = 7 |
| 문장형 | 인사 저장 안녕하세요 | 인사 = "안녕하세요" |
| 문장형 | 점수를 0으로 설정해 | 점수 = 0 |
| 문장형 | 점수는 0이다 | 점수 = 0 |
| 초급 | 저장 총합 1 + 2 | 총합 = 1 + 2 |
| 고급 | 인사 = '안녕' | unchanged |
한국어는 조사 은/는만으로 저장이 됩니다. 영어에는 그런 조사가 없으므로
set … to …를 씁니다.
4. 값 바꾸기
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 점수에 1 더해 | 점수 = 점수 + 1 |
| 문장형 | 점수에 1 더해줘 | 점수 = 점수 + 1 |
| 문장형 | 점수 1 올려 | 점수 = 점수 + 1 |
| 문장형 | 1을 점수에 더해 | 점수 = 점수 + 1 |
| 문장형 | 점수에서 1 빼줘 | 점수 = 점수 - 1 |
| 문장형 | 점수에 2 곱해 | 점수 = 점수 * 2 |
| 문장형 | 점수를 2로 나눠 | 점수 = 점수 / 2 |
| 문장형 | 점수에서 1 + 2 빼줘 | 점수 = 점수 - (1 + 2) |
| 고급 | 점수 += 1 | unchanged |
⚠ 여러 낱말짜리 값은 괄호로 묶입니다. 점수에서 1 + 2 빼줘는
점수 - (1 + 2)이지 점수 - 1 + 2가 아닙니다.
5. 기다리기
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 3초 기다려 | __import__("time").sleep(3) |
| 문장형 | 3초 쉬어 | __import__("time").sleep(3) |
| 문장형 | 1초 기다려 | __import__("time").sleep(1) |
| 문장형 | 이초 기다려 | __import__("time").sleep(2) |
| 문장형 | 5 초 기다려주세요 | __import__("time").sleep(5) |
| 문장형 | 쉬는시간 기다려 | __import__("time").sleep(쉬는시간) |
| 고급 | import time; time.sleep(3) | unchanged |
단위 낱말(초, seconds)은 생략해도 됩니다. 숫자가 없는 줄
(잠깐 기다려)은 그냥 문장으로 출력됩니다.
6. 횟수 반복
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 3번 반복해서 다시 말해줘 | for _ in range(3): print("다시") |
| 문장형 | 3번 환영합니다 | for _ in range(3): print("환영합니다") |
| 문장형 | 세 번 반복해서 다시 말해줘 | for _ in range(3): print("다시") |
| 문장형 | 3회 반복해서 다시 말해줘 | for _ in range(3): print("다시") |
| 문장형 | 3번 반복해 … 끝 | for _ in range(3): |
| 문장형 | 계속 반복해 | while True: |
| 문장형 | 계속 반복해서 다시 말해줘 | while True: print("다시") |
| 초급 | 3번: 말해 "안녕" | for _ in range(3): print("안녕") |
| 문장형 | 수를 1부터 10까지 세면서 반복해 | for 수 in range(1, 11): |
| 문장형 | 수 10부터 1까지 세면서 반복해 | for 수 in range(10, 0, -1): |
| 문장형 | 수를 1부터 인원까지 세면서 반복해 | for 수 in (range(1, 인원 + 1) if 1 <= 인원 else range(1, 인원 - 1, -1)): |
| 문장형 | 수를 1부터 3까지 세며 반복해서 수 말해줘 | for 수 in range(1, 4): print(수) |
| 초급 | 수를 1부터 10까지 세면서: | for 수 in range(1, 11): |
| 고급 | for i in range(3): | unchanged |
블록은 세 가지로 닫습니다: 들여쓰기, : 뒤 한 줄, 또는 끝/end 한 줄.
세면서 반복은 양 끝을 모두 셉니다. 두 끝이 숫자면 크기를 보고 올라가거나
내려가고, 한쪽이라도 이름이면 어느 쪽으로 셀지를 반복이 시작될 때 정합니다.
7. 목록 반복
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 친구들의 친구마다 반복해 | for 친구 in 친구들: |
| 문장형 | 친구들의 친구마다 반복해서 친구 말해줘 | for 친구 in 친구들: print(친구) |
| 문장형 | 이름들에서 이름마다 반복해 | for 이름 in 이름들: |
| 문장형 | 친구들의 친구 마다 반복해 | for 친구 in 친구들: |
| 문장형 | 친구들마다 반복해 | for 친구 in 친구들: |
| 문장형 | 친구들의 친구마다 순서와 함께 반복해 | for 순서, 친구 in enumerate(친구들, 1): |
| 초급 | 친구들의 친구마다: | for 친구 in 친구들: |
| 초급 | 친구들의 친구마다 순서와 함께: | for 순서, 친구 in enumerate(친구들, 1): |
| 고급 | for 친구 in 친구들: | unchanged |
마다 앞의 이름이 항목을 하나씩 받는 이름이고, 그 이름은 블록 안에서 바로
쓸 수 있습니다.
8. 조건 반복
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 점수가 3보다 작을 동안 | while (점수 < 3): |
| 문장형 | 준비 그리고 대기 동안 | while (준비 and 대기): |
| 문장형 | 점수가 0보다 큰 동안 | while (점수 > 0): |
| 문장형 | 준비하는동안 확인 말해줘 | while (준비): print("확인") |
| 초급 | 동안 점수 < 3 | while (점수 < 3): |
| 고급 | while 점수 < 3: | unchanged |
9. 조건
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 만약에 점수가 10보다 크면 성공 말해줘 | if (점수 > 10): print("성공") |
| 문장형 | 만약에 이름이 있으면 | if (이름): |
| 문장형 | 만약에 밤이면 | if (밤): |
| 문장형 | 만약에 이름 길이가 친구들 개수보다 크면 | if (len(이름) > len(친구들)): |
| 문장형 | 만약 점수 > 10 이면 성공 말해줘 | if (점수 > 10): print("성공") |
| 문장형 | 만약에 점수가 10 초과면 성공 말해줘 | if (점수 > 10): print("성공") |
| 문장형 | 점수가 5보다 크면 높음 말해줘 | if (점수 > 5): print("높음") |
| 문장형 | 아니면 만약에 점수가 0과 같으면 | elif (점수 == 0): |
| 문장형 | 아니면 | else: |
| 초급 | 만약 점수 == 1: 말해 "하나" | if (점수 == 1): print("하나") |
| 고급 | if 점수 == 1: | unchanged |
비교의 오른쪽도 왼쪽이 받는 읽기(길이, 개수, 나머지, 몫, 계산 따위)를 똑같이
받습니다. 앞에서 만든 이름만 읽고, 아니면 예전처럼 글입니다. 한 글자 이름에 어미를
붙인 만약에 밤이면·만약에 비면·만약에 비라면은 그 이름이 앞에서 만든 이름일 때
if 밤:처럼 이름 하나를 검사합니다.
10. 비교 어휘
| NME | Python | 뜻 |
|---|---|---|
만약에 이름이 있으면 | 이름 | 참인 값 / truthy |
만약에 이름이 없으면 | not (이름) | 거짓인 값 / falsey |
만약에 점수가 10과 같으면 | 점수 == 10 | == |
만약에 점수가 10과 같지 않으면 | 점수 != 10 | != |
만약에 점수가 10보다 크면 | 점수 > 10 | > |
만약에 점수가 10보다 작으면 | 점수 < 10 | < |
만약에 점수가 10보다 크거나 같으면 | 점수 >= 10 | >= |
만약에 점수가 10보다 작거나 같으면 | 점수 <= 10 | <= |
만약 준비 그리고 점수가 2보다 크면 | 준비 and 점수 > 2 | and / 그리고 |
만약 준비 또는 대기 | 준비 or 대기 | or / 또는 |
한국어 어미는 줄여 써도 됩니다: 같다면 · 같으면 · 같을 · 같지않다면 · 같지않으면 · 같지않을 · 경우 · 그러면 · 그럼 · 넘는다면 · 넘으면 · 넘을 · 때 · 라면 · 많다면 · 많으면 · 많을 · 면 · 모자라면 · 미만면 · 미만이면 · 미만인 · 미만일 · 비어있다면 · 비어있으면 · 비었다면 · 비었으면 · 안되면 · 없다면 · 없으면 · 이라면 · 이면 · 이상이면 · 이상인 · 이상일 · 이하이면 · 이하인 · 이하일 · 일때 · 있다면 · 있으면 · 작거나같다면 · 작거나같으면 · 작거나같은 · 작거나같을 · 작다면 · 작으면 · 작을 · 적다면 · 적으면 · 적을 · 초과면 · 초과이면 · 초과인 · 초과일 · 크거나같다면 · 크거나같으면 · 크거나같은 · 크거나같을 · 크다면 · 크면 · 클 · 하면
11. 반복 제어
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 멈춰 | break |
| 문장형 | 여기서 멈춰 | break |
| 문장형 | 그만해 | break |
| 문장형 | 정지해 | break |
| 문장형 | 멈춰줘 | break |
| 문장형 | 건너뛰어 | continue |
| 문장형 | 계속해 | continue |
| 문장형 | 끝 | (closes the block) |
| 문장형 | 종료 | (closes the block) |
멈춰와 건너뛰어는 그 자체로 올바른 Python 이름이므로, 반복 블록 안에서만
NME 명령이 됩니다. 블록 밖에서는 Python 그대로 남습니다.
12. 목록
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 친구들은 목록 민수, 지안 | 친구들 = ["민수", "지안"] |
| 문장형 | 친구들은 목록 민수와 지안 | 친구들 = ["민수", "지안"] |
| 문장형 | 점수들은 목록 1, 2, 3 | 점수들 = [1, 2, 3] |
| 문장형 | 친구들은 목록 | 친구들 = [] |
| 문장형 | 친구들에 민수 넣어 | 친구들.append("민수") |
| 문장형 | 친구들에 민수 추가해 | 친구들.append("민수") |
| 문장형 | 친구들에 민수 더해 | 친구들.append("민수") |
| 문장형 | 민수를 친구들에 넣어 | 친구들.append("민수") |
| 문장형 | 친구들은 빈 목록 | 친구들 = [] |
| 문장형 | 친구들에서 민수 빼 | 친구들.remove("민수") |
| 문장형 | 친구들 개수 말해줘 | print(len(친구들)) |
| 문장형 | 총합은 친구들 개수 | 총합 = len(친구들) |
| 문장형 | 친구들 개수 명 남았습니다 말해줘 | print(str(len(친구들)) + " 명 남았습니다") |
| 문장형 | 친구들 정렬해 | 친구들.sort() |
| 문장형 | 친구들 거꾸로 해 | 친구들.reverse() |
| 문장형 | 친구들 섞어 | __import__("random").shuffle(친구들) |
| 문장형 | 친구들 첫 번째 말해줘 | print(친구들[0]) |
| 문장형 | 친구들 마지막 말해줘 | print(친구들[-1]) |
| 문장형 | 친구들 2번째 말해줘 | print(친구들[1]) |
| 문장형 | 친구들 1번째를 지안으로 바꿔 | 친구들[0] = "지안" |
| 문장형 | 점수들 마지막을 9로 바꿔 | 점수들[-1] = 9 |
| 문장형 | 점수들의 첫 번째를 9로 바꿔줘 | 점수들[0] = 9 |
| 문장형 | 점수들 점수 번째를 0으로 바꿔 | 점수들[점수 - 1] = 0 |
| 문장형 | 친구들 중 아무거나 말해줘 | print(__import__("random").choice(친구들)) |
| 문장형 | 고른사람은 친구들에서 아무것이나 | 고른사람 = __import__("random").choice(친구들) |
| 문장형 | 친구들 중에서 아무거나 말해줘 | print(__import__("random").choice(친구들)) |
| 문장형 | 점수들 합 말해줘 | print(sum(점수들)) |
| 문장형 | 점수들 중 가장 큰 것 말해줘 | print(max(점수들)) |
| 문장형 | 점수들 중 가장 작은 것 말해줘 | print(min(점수들)) |
| 문장형 | 친구들을 쉼표로 이어 말해줘 | print(", ".join(map(str, 친구들))) |
| 문장형 | 친구들을 빈칸으로 이어 말해줘 | print(" ".join(map(str, 친구들))) |
| 문장형 | 친구들을 붙여 말해줘 | print("".join(map(str, 친구들))) |
| 문장형 | 친구들을 그대로 이어 말해줘 | print("".join(map(str, 친구들))) |
| 문장형 | 만약에 친구들에 민수가 있으면 | if ("민수" in 친구들): |
| 문장형 | 만약에 친구들에 지안이 없으면 | if ("지안" not in 친구들): |
| 문장형 | 만약에 친구들이 비었으면 | if (not (친구들)): |
| 초급 | 말해 len(친구들) | print(len(친구들)) |
| 고급 | 친구들 = ["민수"] | unchanged |
목록/list of 표시가 없으면 쉼표가 들어간 줄은 그냥 글입니다.
친구들에 민수 넣어(목록에 넣기)와 점수에 1 더해(값 바꾸기)는 다른 명령입니다.
몇 번째인지는 1부터 셉니다. 친구들 첫 번째가 곧 친구들 1번째이고,
Python으로는 친구들[0]이 됩니다. 0번째는 없으며 적으면 E0229로 알려 줍니다.
항목을 바꾸는 바꿔도 같은 셈을 씁니다. 표에는 번째가 없어서 E0234로 알려 줍니다.
목록을 읽고 바꾸는 문장(개수·정렬해·섞어·첫 번째·합·빼…)은
프로그램이 이미 목록으로 만든 이름에만 씁니다. 그래야 친구들 이야기를 들었습니다처럼 그 낱말이 들어간 평범한 문장이 명령으로 바뀌지 않습니다.
목록이 아닌 이름에 쓰면 E0231로 알려 줍니다.
쉼표/comma는 쉼표와 빈칸(", "), 빈칸·공백/space는 빈칸 하나,
줄바꿈/newline은 줄바꿈입니다. 항목이 숫자여도 되도록 map(str, …)을
거쳐서 잇습니다.
13. 표
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 나이표는 빈 표 | 나이표 = {} |
| 문장형 | 나이표는 표 | 나이표 = {} |
| 문장형 | 나이표는 비어있는 표 | 나이표 = {} |
| 문장형 | 나이표에 민수를 90으로 넣어 | 나이표["민수"] = 90 |
| 문장형 | 나이표에 민수를 90으로 두어 | 나이표["민수"] = 90 |
| 문장형 | 나이표에 민수를 90으로 저장해 | 나이표["민수"] = 90 |
| 문장형 | 나이표의 민수 말해줘 | print(나이표["민수"]) |
| 문장형 | 제일은 나이표에서 민수 | 제일 = 나이표["민수"] |
| 문장형 | 나이표 개수 말해줘 | print(len(나이표)) |
| 문장형 | 만약에 나이표에 민수가 있으면 | if ("민수" in 나이표): |
| 문장형 | 나이표의 이름마다 반복해 | for 이름 in 나이표: |
| 문장형 | 나이표에서 민수 빼 | del 나이표["민수"] |
| 초급 | 저장 나이표2 {} | 나이표2 = {} |
| 초급 | 말해 나이표["민수"] | print(나이표["민수"]) |
| 고급 | 나이표["민수"] = 90 | unchanged |
표는 이름이 붙은 값을 한 번에 여럿 담습니다. Python으로는 사전(dictionary)이고, 처음 배우는 사람에게는 「이름과 그에 딸린 값을 적어 둔 표」입니다.
빈 표/an empty record는 값을 저장하는 자리에서만 표가 됩니다.
표를 보여 주세요처럼 그 낱말이 들어간 평범한 문장은 그대로 글로 남습니다.
목록과 겹치는 표기 — 개수·빼·넣어·…에 …가 있으면·…마다 반복해 — 는
모두 같은 낱말이고, 그 이름이 목록인지 표인지에 따라 하는 일이 갈립니다.
읽는 사람이 어느 쪽인지 외울 필요가 없도록 일부러 그렇게 했습니다. 목록인
이름에 표 문장을 쓰면 E0234로 알려 줍니다.
표에는 순서가 없어서 합·가장 큰 것·첫 번째·정렬해는 쓰지 않습니다.
나이표의 이름마다 반복해는 값이 아니라 이름을 하나씩 돌려주므로, 값은
나이표의 이름처럼 다시 꺼내 읽습니다.
영어로 쓴 set Mina to 90 in ages와 set best to Mina in ages는 같은 여섯 낱말이
같은 차례로 놓인 것인데 뜻이 정반대입니다. to 뒤에 오는 것이 가릅니다 — 숫자나
따옴표 안의 글자는 써 넣는 값이고, 낱말은 읽어 오는 이름입니다. 숫자를
이름으로 삼은 표도 그대로 읽을 수 있습니다. 숫자를 이름에 먼저 담으면 됩니다
(set key to 90 다음에 set who to key in ages).
Python으로 나이표 = {}라고 쓴 이름도 표로 봅니다.
14. 글자 다루기
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 이름 길이 말해줘 | print(len(이름)) |
| 문장형 | 이름 대문자로 말해줘 | print(str(이름).upper()) |
| 문장형 | 이름 소문자로 말해줘 | print(str(이름).lower()) |
| 문장형 | 이름들은 memo를 줄마다 나눈 것 | 이름들 = str(memo).splitlines() |
| 문장형 | 칸들은 memo를 쉼표로 나눈 것 | 칸들 = str(memo).split(",") |
| 문장형 | 한줄은 친구들을 쉼표로 이은 것 | 한줄 = ", ".join(map(str, 친구들)) |
| 문장형 | 레벨은 레벨글을 숫자로 바꾼 것 | 레벨 = int(레벨글) |
| 문장형 | 말들은 memo를 빈칸으로 나눈 것 | 말들 = str(memo).split(" ") |
| 문장형 | 막대는 이름을 5개 붙인 것 | 막대 = str(이름) * 5 |
| 문장형 | 이름을 3번 붙인 것 말해줘 | print(str(이름) * 3) |
| 초급 | 말해 len(이름) | print(len(이름)) |
| 고급 | 이름.upper() | unchanged |
길이/the length of는 글자 수를, 대문자로/in capitals와
소문자로/in small letters는 같은 글을 대·소문자로 바꾼 것을 돌려줍니다.
셋 다 값이므로 출력·저장·조건 어디에나 쓸 수 있습니다. 앞에서 만든 이름에만
쓸 수 있고, 그래서 그 낱말이 들어간 평범한 문장은 그대로 글로 남습니다.
15. 숫자 계산과 나머지
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 남은것은 총합 빼기 점수 | 남은것 = 총합 - 점수 |
| 문장형 | 점수 더하기 인원 말해줘 | print(점수 + 인원) |
| 문장형 | 두배는 점수 곱하기 2 | 두배 = 점수 * 2 |
| 문장형 | 두배는 점수 곱하기 2 | 두배 = 점수 * 2 |
| 문장형 | 한몫은 총합 나누기 인원 | 한몫 = 총합 / 인원 |
| 문장형 | 큰값은 점수 더하기 인원 곱하기 2 | 큰값 = 점수 + 인원 * 2 |
| 문장형 | 만약에 총합 빼기 점수가 3보다 크면 | if (총합 - 점수 > 3): |
| 문장형 | 점수를 4로 나눈 나머지 말해줘 | print(점수 % 4) |
| 문장형 | 남은것은 점수를 4로 나눈 나머지 | 남은것 = 점수 % 4 |
| 문장형 | 만약에 점수를 4로 나눈 나머지가 0과 같으면 | if (점수 % 4 == 0): |
| 문장형 | 점수를 4로 나눈 몫 말해줘 | print(점수 // 4) |
| 문장형 | 줄수는 점수를 인원으로 나눈 몫 | 줄수 = 점수 // 인원 |
| 문장형 | 줄수는 점수를 4로 나눈 몫 | 줄수 = 점수 // 4 |
| 초급 | 말해 점수 % 4 | print(점수 % 4) |
| 초급 | 말해 점수 // 4 | print(점수 // 4) |
| 초급 | 저장 남은것 총합 - 점수 | 남은것 = 총합 - 점수 |
| 고급 | 남은것 = 점수 % 4 | unchanged |
| 고급 | 줄수 = 점수 // 4 | unchanged |
| 고급 | 남은것 = 총합 - 점수 | unchanged |
더하기·빼기·곱하기·나누기/plus·minus·times·multiplied by·divided by는 Python의 + - * /입니다. 양쪽이 모두 적어 놓은 숫자이거나 앞에서 만든
이름일 때만 계산이고, 하나라도 아니면 예전처럼 글입니다. 그래서 설탕 빼기와
one plus one equals two는 그대로 출력됩니다. 여러 개를 이어 쓰면 수학 순서대로
곱셈·나눗셈을 먼저 합니다. 저장하는 값, 출력하는 값 전체, 비교의 어느 쪽에나
쓸 수 있습니다.
나머지/the remainder of는 나눗셈에서 남는 수이고, 몫/the whole number of는 온전히 몇 번 들어가는지입니다. 둘 다 값이라서 출력·저장·조건 어디에나 쓸 수
있고, 나누는 수는 숫자이거나 앞에서 만든 이름이어야 합니다.
나누기와 나눠는 파이썬의 /라서 답이 소수가 됩니다. 소수는 목록의 몇 번째,
반복 횟수, 저장할 점수 자리에 넣을 수 없어 그때 프로그램이 멈춥니다. 그런 자리에는
몫을 쓰세요.
16. 값과 리터럴
| 영어 표기 | 한국어 표기 | Python |
|---|---|---|
True · true | 참 | True |
False · false | 거짓 | False |
None · none · null | 없음 | None |
17. 무작위
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 주사위는 1부터 6까지 랜덤정수 | 주사위 = __import__("random").randint(1, 6) |
| 문장형 | 색은 빨강 또는 초록 중에서 랜덤선택 | 색 = __import__("random").choice(("빨강", "초록",)) |
| 문장형 | 색은 빨강 또는 초록 중에서 뽑아 | 색 = __import__("random").choice(("빨강", "초록",)) |
| 초급 | 랜덤 사용 | (binds the random helpers) |
| 초급 | 말해 랜덤정수(1, 6) | print(랜덤정수(1, 6)) |
숫자로 적은 선택지는 숫자로 남습니다(1 또는 2 중에서 랜덤선택 → choice((1, 2,))).
18. 확률
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 30% 확률로 말해줘 당첨 | if __import__("random").randrange(1000) < 300: print("당첨") |
| 문장형 | 30.5% 확률로 말해줘 당첨 | if __import__("random").randrange(1000) < 305: print("당첨") |
| 문장형 | 30%의 확률로 말해줘 당첨 | if __import__("random").randrange(1000) < 300: print("당첨") |
| 문장형 | 30퍼센트 확률로 말해줘 당첨 | if __import__("random").randrange(1000) < 300: print("당첨") |
| 문장형 | 확률 30%로 말해줘 당첨 | if __import__("random").randrange(1000) < 300: print("당첨") |
| 문장형 | 30% 확률로 | if __import__("random").randrange(1000) < 300: |
| 문장형 | 운은 30% 확률 | 운 = __import__("random").randrange(1000) < 300 |
30%는 천 번 중 300번입니다. 소수점은 첫째 자리까지만 쓸 수 있고(30.5%),
그보다 잘게 적으면 반올림하지 않고 E0227로 알려 줍니다. 쓴 사람이 적지 않은
뜻으로 프로그램이 돌아가는 일은 없어야 하기 때문입니다. 범위는 0%부터
100%까지이며 벗어나면 E0228입니다. 100%는 항상 일어나고 0%는 절대
일어나지 않습니다. 비교는 천분율 정수로만 하므로 소수 비교에서 생기는 오차가
없습니다.
이름에 저장한 확률은 참·거짓 값이라서 만약에 운이 있으면처럼 그대로 물어볼 수
있습니다.
19. 파일
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | memo에 "notes.txt" 읽어서 | memo = __import__("pathlib").Path("notes.txt").read_text() |
| 문장형 | "out.txt" 파일에 "hello"를 저장해 | __import__("pathlib").Path("out.txt").write_text("hello") |
| 초급 | 파일 사용 | (binds the file helpers) |
| 초급 | 말해 파일읽기("notes.txt") | print(파일읽기("notes.txt")) |
파일 경로는 항상 따옴표로 감쌉니다. 이것만은 문장형에서도 예외입니다.
20. 모듈
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 초급 | 랜덤 사용 | (binds random, random_number, random_pick, shuffle and their Korean twins) |
| 초급 | 파일 사용 | (binds file_read, file_write, json_load, json_save and their Korean twins) |
| 초급 | 영지식 사용 | (binds zk_secret, zk_public, zk_nizk_prove, … and their Korean twins) |
| 초급 | 목록 사용 | (binds count, sort, reverse, remove, first, last, sum, largest, smallest and their Korean twins) |
| 초급 | 글자 사용 | (binds upper, lower, trim, split, join, replace, starts_with, length and their Korean twins) |
| 초급 | 수학 사용 | (binds math, root, round_to, pi, power, absolute, floor, ceil and their Korean twins) |
| 초급 | 날짜 사용 | (binds today, now, year, month, day_of_month, weekday, days_after and their Korean twins) |
| 초급 | 랜덤 사용 최신 | (the newest bundled adapter) |
| 초급 | 랜덤 사용 버전 "0.0.1" | (that exact adapter) |
| 문장형 | "helper.nme"에서 greet 가져와 | (from helper import greet — needs helper.nme next to the program) |
| 초급 | "helper.nme"에서 greet 가져오기 | (from helper import greet — needs helper.nme next to the program) |
| 고급 | from "helper.nme" import greet | (from helper import greet — needs helper.nme next to the program) |
랜덤 사용·파일 사용·영지식 사용 다음으로 자주 쓰는 네 가지가 목록 사용,
글자 사용, 수학 사용, 날짜 사용입니다. 한 줄이면 아래 이름들이 한국어와 영어
두 가지로 모두 준비되고, 안에 들어 있는 것은 전부 평범한 Python 기본 기능이라
브라우저에서도 그대로 돕니다. 목록·글자·수학·날짜는 평범한 낱말이라서,
사용/use 바로 옆에 있고 그 줄에 다른 낱말이 없을 때만 모듈로 읽습니다.
장 볼 목록을 사용해 보세요와 이 날짜 사용법을 알려 주세요는 그대로 출력되는
문장입니다.
어제·내일·3일 전·3일 뒤(영어로는 yesterday·tomorrow·3 days ago·
3 days from now)는 오늘에서 며칠 옮긴 날을 가리키는 문장 표기입니다. 도구 상자를
연 뒤에만 날짜가 되므로, 약속은 3일 전이었습니다와 3 days ago I saw her는
그대로 출력되는 문장입니다.
날짜 이름 여섯 개는 뒤에 아무것도 적지 않아도 답을 내놓습니다. 그래서 괄호 없이
쓸 수 있고, 날짜를 다루는 프로그램도 문장문법만으로 쓸 수 있습니다.
오늘 말해줘·요일 말해줘·올해 말해줘, 영어로는 show today·show weekday·
show year이며, 지금/now·이번달/month·오늘일자/day_of_month도
마찬가지입니다. 며칠뒤(n)는 여기 들지 않습니다. 며칠인지를 뒤에 적어야 하고,
그것이 없는 것은 컴파일러가 아니라 쓰는 사람이 빠뜨린 것입니다.
수요일이면 요일()은 수요일을, 영어 이름 weekday()는 Wednesday를
돌려줍니다. 두 이름이 서로 다른 값을 갖는 곳은 내장 모듈을 통틀어 여기 하나이며,
요일 이름은 숫자가 아니라 낱말이라서 어느 한 언어에 속할 수밖에 없기 때문입니다.
적은 이름이 답의 언어를 정합니다. 브라우저가 Python에 주는 시계는 UTC이므로
브라우저에서 오늘()은 UTC 기준의 오늘입니다.
목록 사용 (use list):
| 한국어 표기 | 영어 표기 | Python |
|---|---|---|
개수(값들) | count(values) | len(values) |
정렬(값들) | sort(values) | sorted(values) — a new list; the original is left alone |
뒤집기(값들) | reverse(values) | list(reversed(values)) |
빼기(값들, x) | remove(values, x) | every item that is not x, as a new list |
첫번째(값들) | first(values) | values[0] |
마지막(값들) | last(values) | values[-1] |
합계(값들) | sum(values) | sum(values) |
최대(값들) | largest(values) | max(values) |
최소(값들) | smallest(values) | min(values) |
목록버전 | list_version | "0.0.1" |
글자 사용 (use text):
| 한국어 표기 | 영어 표기 | Python |
|---|---|---|
대문자(글) | upper(text) | str(text).upper() |
소문자(글) | lower(text) | str(text).lower() |
공백없애기(글) | trim(text) | str(text).strip() |
나누기(글, 구분자) | split(text, sep) | str(text).split(sep) |
합치기(구분자, 값들) | join(sep, values) | str(sep).join(map(str, values)) |
바꾸기(글, a, b) | replace(text, a, b) | str(text).replace(a, b) |
로시작(글, a) | starts_with(text, a) | str(text).startswith(a) |
길이(글) | length(text) | len(text) |
글자버전 | text_version | "0.0.1" |
수학 사용 (use math):
| 한국어 표기 | 영어 표기 | Python |
|---|---|---|
제곱근(x) | root(x) | math.sqrt(x) |
반올림(x, 자리) | round_to(x, places) | round(x, places) — places may be left out |
원주율 | pi | math.pi |
거듭제곱(x, y) | power(x, y) | pow(x, y) — whole numbers stay whole |
절댓값(x) | absolute(x) | abs(x) |
내림(x) | floor(x) | math.floor(x) |
올림(x) | ceil(x) | math.ceil(x) |
수학버전 | math_version | "0.0.1" |
날짜 사용 (use date):
| 한국어 표기 | 영어 표기 | Python |
|---|---|---|
오늘() | today() | date.today().isoformat() — text such as "2026-08-19" |
지금() | now() | datetime.now().strftime("%H:%M") — the clock a browser gives is UTC |
올해() | year() | date.today().year |
이번달() | month() | date.today().month |
오늘일자() | day_of_month() | date.today().day |
요일() | weekday() | strftime("%A"), an English name such as Wednesday; the Korean name answers 수요일 |
며칠뒤(n) | days_after(n) | (date.today() + timedelta(days=n)).isoformat(); a negative n reads as days before |
날짜버전 | date_version | "0.0.1" |
정렬·뒤집기·빼기는 새 목록을 돌려주고 원래 목록은 그대로 둡니다. 원래 목록을
직접 바꾸려면 문장형 친구들 정렬해·친구들 거꾸로 해·친구들에서 민수 빼를
쓰세요.
21. 천천히 말하기
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 천천히 말해줘 안녕 | [print(_ch, end="", flush=True) or __import__("time").sleep(0.04) for _ch in "안녕"]; print() |
| 문장형 | 천천히 보여줘 안녕 | [print(_ch, end="", flush=True) or __import__("time").sleep(0.04) for _ch in "안녕"]; print() |
| 문장형 | 아주 천천히 말해줘 안녕 | [print(_ch, end="", flush=True) or __import__("time").sleep(0.12) for _ch in "안녕"]; print() |
| 문장형 | 3초씩 천천히 말해줘 안녕 | [print(_ch, end="", flush=True) or __import__("time").sleep(3) for _ch in "안녕"]; print() |
글자를 하나씩 내보내고 사이에 잠깐 쉽니다. 쉬는 시간은 기본 0.04초, 아주를
붙이면 0.12초이며, 3초씩처럼 직접 정할 수도 있습니다.
22. 이야기
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 이야기: | if True: |
| 문장형 | 천천히 이야기: | if True: |
| 문장형 | 아주 천천히 이야기: | if True: |
| 문장형 | 3초씩 천천히 이야기: | if True: |
| 문장형 | 문이 열렸습니다. | print("문이 열렸습니다.") |
| 문장형 | 3초 기다려 | (이야기 안에서는 print("3초 기다려")) |
이야기: 안에서는 모든 줄이 글입니다. 3초 기다려도 만약에도 명령이
아니라 그대로 출력됩니다. 소설처럼 쓰는 것이 목적이라서, 글 한 줄이 조용히
명령으로 바뀌는 일을 아예 막아 두었습니다. 블록은 끝/end으로 닫고, 들여쓰기로
열었으면 들여쓰기가 끝나는 곳에서도 닫힙니다. 빈 줄은 print()가 되어 한 줄을
띄우고, 앞에서 만든 이름은 글 안에서 값으로 바뀝니다. 콜론은 반각 :과 전각
: 둘 다 됩니다.
23. 이름 붙인 일
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 인사하기라는 일: | def 인사하기(): |
| 문장형 | 계산이라는 작업: | def 계산(): |
| 문장형 | 인사하기 해줘 | 인사하기() |
| 문장형 | 인사하기 해 | 인사하기() |
| 문장형 | 인사하기 실행해 | 인사하기() |
| 문장형 | 이름에게 부르기라는 일: | def 부르기(이름): |
| 문장형 | 민수에게 부르기 해줘 | 부르기("민수") |
| 문장형 | 민수한테 부르기 실행해 | 부르기("민수") |
| 문장형 | 결과로 점수 돌려줘 | return 점수 |
| 문장형 | 점수 돌려줘 | return 점수 |
| 문장형 | 인사하기 한 결과 말해줘 | print(인사하기()) |
| 문장형 | 말은 민수에게 부르기 한 결과 | 말 = 부르기("민수") |
| 고급 | def 인사하기(): | unchanged |
| 고급 | return 점수 | unchanged |
이름 붙인 일은 프로그램의 한 조각에 이름을 붙여 두었다가 나중에 그 이름으로
실행하는 것입니다. Python으로는 함수(def)입니다.
일·하기·해줘는 평범한 낱말이라서, 이름 붙인 일은 낱말이 아니라 모양으로
알아봅니다. 이름 뒤의 라는(또는 이라는), 그 뒤의 일(또는 작업), 줄 끝의
:, 그리고 그 아래에 오는 묶음까지 넷이 모두 있어야 합니다.
할 일이 많습니다에는 그중 하나도 없습니다.
묶음이 없으면 일이 아닙니다. 오늘의 할 일:처럼 제목만 있는 줄은 그대로 글로
나옵니다. 한 줄로 붙여 쓰는 형태도 없습니다.
일을 실행하는 줄은 그 프로그램이 이미 만든 일 이름일 때만 실행이 됩니다.
해·해줘는 그 자체로는 아무것도 정하지 못합니다. Python으로 쓴 def도 받는
값이 없으면 같은 방법으로 실행할 수 있습니다.
일 안에서 저장한 이름은 일 안에만 있습니다. Python 함수와 같습니다.
⚠ 일이 읽는 이름은 그 일보다 위에 이미 있어야 합니다. 아래에서 만드는 이름을 일 안에서 쓰면, 그 낱말은 이름이 아니라 글자로 읽힙니다. 컴파일은 통과하고, 실행할 때에 가서야 멈춥니다.
채울양에게 막대그리기라는 일:
남은칸은 막대최대양 ← 막대최대양 = "막대최대양" 이 됩니다
끝
막대최대양은 20 ← 여기가 아니라 일보다 위에 있어야 합니다
일이 쓰는 값은 일을 적기 전에 모아 두세요. 프로그램 맨 위에 「고치는 값」 자리를 만들어 두는 것이 가장 안전합니다.
일은 하나를 받을 수 있습니다. 여는 줄에서 이름 앞에 받을 것을 에게·한테·
을·를로 표시하고(이름에게 인사하기라는 일:), 실행할 때 같은 방법으로
건넵니다(민수에게 인사하기 해줘). 영어는 to greet someone:과
do greet with Mina입니다. 받는 개수가 맞지 않으면 E0235로 알려 줍니다.
실행할 때 나는 Python TypeError는 줄이 멀쩡해 보여서 찾기 어렵기 때문입니다.
일은 값을 돌려줄 수 있습니다. 일 안에서 결과로 <값> 돌려줘라고 적으면, 그 일을
부른 자리가 그 값이 됩니다. 결과로는 없어도 되고, <값> 돌려줘만으로도 됩니다.
받는 쪽은 <이름>은 <준 것>에게 <일이름> 한 결과이고, 주는 것이 없으면
<이름>은 <일이름> 한 결과입니다. 값이라서 출력·저장·조건 어디에나 쓸 수 있습니다.
수에게 두배라는 일:
결과로 수 + 수 돌려줘
끝
답은 5에게 두배 한 결과
답 말해줘
돌려줘는 일 안에서만 그 뜻입니다. 일 바깥의 그 책 돌려줘는 그대로 글로
나옵니다. 일 이름도 마찬가지라서, 한 결과는 그 프로그램이 이미 만든 일 이름
뒤에서만 답을 뜻합니다.
아직 둘 이상을 받는 일은 문장 문법에 없습니다. 필요하면 Python def를
그대로 씁니다.
24. 화면
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 화면 지워 | print("\033[2J\033[3J\033[H", end="") |
| 문장형 | 화면 비워줘 | print("\033[2J\033[3J\033[H", end="") |
| 문장형 | 줄 그어 | print("─" * 40) |
| 문장형 | 가로줄 그어줘 | print("─" * 40) |
| 문장형 | 상자로 말해줘 안녕 | print((lambda _t: (lambda _w: "┌" + "─" * (_w + 2) + "┐\n│ " + _t + " │\n└" + "─" * (_w + 2) + "┘")(sum(2 if __import__("unicodedata").east_asian_width(_c) in "WF" else 1 for _c in _t)))("안녕")) |
| 문장형 | 가운데 말해줘 안녕 | print((lambda _t: " " * max(0, (40 - sum(2 if __import__("unicodedata").east_asian_width(_c) in "WF" else 1 for _c in _t)) // 2) + _t)("안녕")) |
화면 지우기는 터미널에 보내는 제어 문자입니다. 터미널이 아닌 곳에서는 글자 그대로 보일 수 있습니다. 상자와 가운데 맞춤은 한글을 두 칸으로 세기 때문에 한국어 문장도 반듯하게 나오며, 가로 폭은 40칸입니다.
25. 시간 재기
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 시간 재기 시작해 | _nme_clock = __import__("time").time() |
| 문장형 | 시간재기 시작해 | _nme_clock = __import__("time").time() |
| 문장형 | 잰시간 말해줘 | print(round(__import__("time").time() - _nme_clock, 2)) |
| 문장형 | 걸린시간은 잰시간 | 걸린시간 = round(__import__("time").time() - _nme_clock, 2) |
시간 재기 시작해가 시계를 켜고, 잰시간/걸린시간/elapsed는 켠 뒤로 흐른
초를 소수 둘째 자리까지 돌려줍니다. 값이므로 출력·저장·조건 어디에나 쓸 수
있습니다(만약 잰시간이 3보다 크면). 켜지 않고 읽으면 컴파일할 때 E0226으로
알려 줍니다. 프로그램이 잰시간이라는 이름을 직접 만들었으면 그 이름이 이깁니다.
26. 쿨타임
| 단계 | NME | 만들어지는 Python |
|---|---|---|
| 문장형 | 문 쿨타임 3초 걸어 | _nme_cool_문 = __import__("time").time() + 3 |
| 문장형 | 만약 문 쿨타임이 끝났으면 | if (__import__("time").time() >= _nme_cool_문): |
| 문장형 | 문 쿨타임 끝났으면 | if (__import__("time").time() >= _nme_cool_문): |
| 문장형 | 만약 문 쿨타임이 남았으면 | if (__import__("time").time() < _nme_cool_문): |
| 문장형 | 문 쿨타임 끝날때까지 기다려 | __import__("time").sleep(max(0, _nme_cool_문 - __import__("time").time())) |
| 문장형 | 문 쿨타임 끝날 때까지 기다려 | __import__("time").sleep(max(0, _nme_cool_문 - __import__("time").time())) |
쿨타임은 이름마다 하나씩 걸립니다. 문 쿨타임 3초 걸어는 지금부터 3초 뒤를
기억해 두고, 쿨타임이 끝났으면/is ready는 그 시각이 지났는지 봅니다.
조건이므로 만약·동안·아니면 만약과 한 줄 형태에서 모두 쓸 수 있습니다.
wait for door는 영어 문장으로도 읽히므로, 그 이름이 이미 다른 값으로 저장돼
있으면 쿨타임으로 읽지 않습니다.
27. 동작 단어 전수 목록
같은 뜻으로 받아들이는 표기를 하나도 빠뜨리지 않고 적은 표입니다.
| 하는 일 | 영어 표기 | 한국어 표기 |
|---|---|---|
| 출력 / Output | say · show · display · tell · print | 말해 · 말해줘 · 말해주세요 · 보여줘 · 보여주세요 · 출력해 · 출력해줘 · 출력해주세요 · 해줘 · 해주세요 · 읽어줘 |
| 입력 / Input | ask · prompt · question | 물어봐 · 물어봐줘 · 물어보세요 · 질문해 · 질문해줘 · 입력받아 · 입력받아줘 · 입력받아주세요 · 물어봐요 · 물어봐주세요 · 질문해주세요 |
| 저장 / Save | set · save · remember · store · let · make | 저장 · 저장해 · 저장해줘 · 기억해 · 기억해줘 · 설정 · 설정해 · 설정해줘 · 지정 · 지정해 · 정해 · 만들어 |
| 더하기 / Add | add · increase · increment · plus · up · goesup · grow · bump · boost | 더해 · 더해줘 · 올려 · 올려줘 · 늘려 · 늘려줘 · 더하기 · 증가 · 증가해 · 증가시켜 |
| 빼기 / Subtract | subtract · decrease · decrement · minus · remove · down · goesdown | 빼 · 빼줘 · 내려 · 내려줘 · 줄여 · 줄여줘 · 빼기 · 감소 · 감소해 · 감소시켜 |
| 곱하기 / Multiply | multiply · multiplied | 곱해 · 곱해줘 · 곱하기해 |
| 나누기 / Divide | divide · divided | 나눠 · 나눠줘 · 나누어줘 |
| 기다리기 / Wait | wait · pause · sleep · hold · delay · rest | 기다려 · 기다려줘 · 기다리세요 · 기다려주세요 · 쉬어 · 쉬어줘 · 쉬세요 · 대기해 · 대기해줘 · 대기 |
| 반복 / Repeat | repeat · again · do | 반복 · 반복해 · 반복해줘 · 반복해주세요 · 반복하세요 · 반복해서 · 반복하고 · 반복한다음 · 다시해 · 다시해주세요 |
| 조건 / If | when · if · should · incase · whenever | 만약 · 만약에 · 만일 · 혹시 |
| 조건 반복 / While | while · aslongas · repeatwhile · keepgoingwhile | 동안 · 하는동안 · 할동안 |
| 다른 갈래 / Else | else · otherwise · orelse · elseinstead | 아니면 · 아니면은 · 아니라면 · 그렇지않으면 · 그렇지않다면 · 안그러면 · 안그렇다면 · 그외에는 · 그외에 · 아니면만약 · 아니면만약에 · 그렇지않으면만약 · 그렇지않으면만약에 |
| 반복 중단 / Break | break · breakhere | 멈춰 · 멈춰줘 · 멈춰라 · 멈추기 · 그만해 · 정지해 · 종료해 · 중단 · 반복멈춰 · 여기서멈춰 |
| 말끝 출력 / Output written last | — | 말하기 · 말해라 · 알려줘 · 알려주세요 · 알려줘요 · 얘기해 · 얘기해줘 · 얘기해주세요 · 표시해 · 표시해줘 · 출력하기 · 보여주기 · 프린트해 · 프린트 · 프린트해줘 · 프린트해주세요 · 표시하기 |
| 목적어가 없을 때만 말끝 출력 / Output written last, with no object | — | 띄워 · 띄워줘 · 띄워주세요 · 나타내 · 나타내줘 · 나타내주세요 · 써줘 · 써주세요 · 적어줘 · 적어주세요 |
| 한 낱말만 보여 주기 / Show the one word after it | output · write · echo · reveal · report · give · list · present · announce · speak · puts | — |
| 한 글자 출력 / Short output word | — | 말 |
| 화면에 / On the screen | screen | 화면에 · 화면에다 · 화면에다가 · 스크린에 |
| 화면 동사 / Screen verb | put · write · print · show · display · say · tell · output · draw | 띄워 · 띄워줘 · 보여줘 · 출력해 · 말해 · 말해줘 · 표시해 |
| 물음표가 있을 때만 묻기 / Ask, only with a question mark | read · get · request · enter · input | 받아 · 받아줘 · 여쭤봐 · 여쭤봐줘 · 여쭈어봐 · 요청해 · 요청해줘 · 요청해주세요 · 달라고해 · 달라고해줘 |
| 짧은 물어보기 / Short asking word | — | 물어 |
| ~로 해 / Save with the everyday verb | becomes · become · call | 해 · 하자 · 합시다 · 하죠 · 부르자 · 두어 · 둬 · 두자 |
| ~로 / ~라고 표시 / What the name becomes | — | 으로 · 로 · 이라고 · 라고 |
| 횟수가 있을 때만 반복 / Repeat, only with a count | loop · iterate · cycle · rep · goround · runthrough | 돌려 · 돌려줘 · 돌려주세요 · 되풀이 · 되풀이해 · 되풀이해줘 · 되풀이해서 · 되풀이하기 |
| 반복할 것을 가리키는 말 / What is being repeated | it · this · that | 그거 · 그걸 · 그것 · 그것을 · 이거 · 이걸 · 이것 · 이것을 |
| 조건을 닫는 말 / Word that closes a condition | — | 때 · 때에 · 때는 · 경우 · 경우에 · 경우에는 |
| 건너뛰기 / Skip | skip · skipthis · skipit · nextone | 건너뛰어 · 건너뛰어줘 · 건너뛰기 · 건너뛰자 · 넘어가 · 넘어가줘 · 계속해 · 넘겨 · 다음 |
| 블록 닫기 / End | end · finish · done | 끝 · 종료 · 마침 |
| 모듈 쓰기 / Use | use · load · get · import | 사용 · 사용해 · 사용해줘 · 사용해주세요 · 불러와 · 불러와줘 · 가져와 · 가져와줘 · 받아 · 받아줘 |
| 다른 파일에서 / Import from a file | use · take · borrow | 가져와 · 가져와줘 · 가져오기 · 불러와 · 불러오기 |
| 목록에 넣기 / Append | append · push · insert · put · place | 넣어 · 넣어줘 · 넣기 · 추가해 · 추가해줘 · 추가하기 · 붙여 · 붙여줘 |
| 목록 표시 / List | list | 목록 · 리스트 |
| 빈 목록 / Empty list | empty · blank | 빈 · 비어있는 · 새 |
| 개수 / How many | count · number · many | 개수 · 갯수 |
| 개수 앞말 / Reading lead | how | — |
| 길이 / Length | length · size | 길이 · 글자수 |
| 합 / Total | total · sum | 합 · 합계 · 총합 |
| 최댓값 / Biggest | biggest · largest · highest · maximum | 최댓값 · 최대값 · 큰 |
| 최솟값 / Smallest | smallest · lowest · minimum | 최솟값 · 최소값 · 작은 |
| 최댓값 앞말 / Extreme scope | — | 중 · 중에서 · 가운데 |
| 가장 / Most | — | 가장 · 제일 |
| 것 / Thing | — | 것 · 값 |
| 첫 번째 / First | first | 첫번째 · 첫째 · 처음 · 첫 |
| 마지막 / Last | last | 마지막 · 맨뒤 |
| 몇 번째 / Item | item · element | 번째 · 째 |
| 항목 바꾸기 / Change an item | set · change | 바꿔 · 바꿔줘 · 바꿔주세요 |
| 아무거나 / A random item | random | 아무거나 · 아무것이나 |
| 아무거나 뒷말 / A random one | one · item · element | — |
| 세면서 / Counting | count | 세면서 · 세며 |
| 대문자 / Capitals | capitals · capital · uppercase | 대문자로 · 대문자 |
| 소문자 / Small letters | lowercase · small | 소문자로 · 소문자 |
| 이어 붙이기 / Join | joined · join | 이어 · 이어서 · 이어붙여 |
| 사이 없이 이어 붙이기 / Join together | together | 붙여 · 붙여서 · 붙여줘 · 이어붙여 · 이어붙여줘 |
| 빈 이음말 / Empty separator | nothing | 그대로 |
| 나누기(글) / Split | split | 나눈 · 쪼갠 · 자른 |
| 줄마다 / By line | line · lines | 줄마다 · 줄별로 · 한줄씩 |
| 나눈 것 / Split thing | — | 것 · 거 · 것들 |
| 붙인 것 / Repeated text | repeated | 붙인 · 이어붙인 |
| 몇 개 / Copies | times | 개 · 번 |
| 몇 번째와 함께 / With its position | with | 함께 · 같이 |
| 나머지 / Remainder | remainder · rest · leftover | 나머지 |
| 돌려주기 / Give back | give · hand · send | 돌려줘 · 돌려줘요 · 돌려주기 · 돌려줍니다 · 돌려주세요 |
| 돌려주기 뒷말 / Back | back | — |
| 답으로 / Answer with | answer | 결과로 · 답으로 · 결과는 · 답은 |
| 한 결과 / The result of | result · answer | 결과 · 답 · 결과값 |
| 한 / Having run | — | 한 · 해서 · 실행한 · 시킨 |
| 몫 / Quotient | quotient | 몫 |
| 더하기 / Plus | plus | 더하기 |
| 빼기 / Minus | minus | 빼기 |
| 곱하기 / Times | times · multiplied | 곱하기 |
| 나누기 / Divided by | divided | 나누기 |
| 온전한 수 / Whole number | whole | — |
| 이은 것 / Joined thing | — | 이은 · 이어붙인 · 붙인 |
| 바꾼 것 / Changed into | — | 바꾼 · 고친 · 읽은 |
| 나누기 말 / Divided | divided · shared · split | 나눈 · 나눈뒤 · 나누고 |
| 이음말 / Separator | comma · space · newline | 쉼표 · 빈칸 · 공백 · 줄바꿈 |
| 정렬 / Sort | sort · order · arrange · sortout | 정렬해 · 정렬해줘 · 정렬 · 정렬하기 · 순서대로 · 순서대로해 · 차례대로 · 차례대로해 · 오름차순 · 오름차순으로 · 오름차순으로해 |
| 거꾸로 / Reverse | reverse · flip · invert | 거꾸로 · 거꾸로해 · 거꾸로해줘 · 뒤집어 · 뒤집어줘 · 뒤집기 · 반대로 · 반대로해 · 역순으로 · 역순으로해 |
| 섞기 / Shuffle | shuffle · mix · jumble · scramble · randomise · randomize | 섞어 · 섞어줘 · 섞어주세요 · 섞기 · 랜덤하게 · 랜덤하게해 · 무작위로해 |
| 들어있는지 / Contains | contains · contain · includes · include · holds | 안에는 · 속에는 · 안에 · 속에 · 에는 · 에 |
| 표 표시 / Record | record · table | 표 |
| 표에 넣기 / Put in a record | put · set · store · save · record · add | 넣어 · 넣어줘 · 넣어주세요 · 넣기 · 두어 · 두어줘 · 저장해 · 저장해줘 · 기억해 · 기억해줘 · 적어 · 적어줘 |
| 표 값 앞말 / Record value connector | at · as | 으로 · 로 |
| 표 이름 앞말 / Record container connector | in · into · to | 을 · 를 |
| 표에서 읽기 조사 / Record reading particle | — | 에서 · 의 |
| 일 표시 / Job | to | 일 · 작업 |
| 일 이름 어미 / Job name ending | — | 이라는 · 라는 |
| 일 실행 / Run a job | do · run | 해 · 해줘 · 해주세요 · 실행해 · 실행해줘 |
| 일이 받는 것 / What a job is given | with | 에게 · 한테 · 을 · 를 |
| 무한 반복 / Forever | forever · always | 계속 · 무한 · 끝없이 |
| 읽기 조사 / Reading particle | — | 이 · 가 · 은 · 는 · 을 · 를 |
| 숫자로 / As a number | number · numeric | 숫자 · 숫자로 · 수로 |
| 숫자 낱말 / Number words | zero · one · two · three · four · five · six · seven · eight · nine · ten · once · twice | 하나 · 한 · 둘 · 두 · 셋 · 세 · 넷 · 네 · 다섯 · 여섯 · 일곱 · 여덟 · 아홉 · 열 · 일 · 이 · 삼 · 사 · 오 · 육 · 칠 · 팔 · 구 · 십 |
| 횟수 단위 / Count unit | times · time · loops · loop · rounds · round | 번 · 회 · 차례 · 판 |
| 반복 중단(블록 안) / Break inside a block | stop · stophere · exitloop · quit | — |
| 건너뛰기(블록 안) / Skip inside a block | keepgoing · carryon | — |
| 무작위 고르기 / Random pick | randomchoice · pick · choose | 랜덤선택 · 하나골라 · 골라 · 하나뽑아 · 뽑아 |
| 값 바꾸기 연결어 / Value-change connector | to · by · from · of · into · onto | — |
| 목록 연결어 / List connector | to · into · onto · in | 에다가 · 에다 · 에 · 한테 · 에게 |
| 저장 대상 조사 / Saved-name particle | — | 을 · 를 · 이 · 가 · 에 |
| 문장 어미 / Sentence ending | — | 입니다 · 이에요 · 예요 · 이다 · 으로 · 로 · 라고 · 이라고 |
| 최신판 / Latest | latest · newest | 최신 · 최신판 · 최신버전 |
| 파일 읽기 / File read | read | 읽어서 · 읽고 · 읽어 |
| 파일 쓰기 / File write | write | 저장해 · 저장해줘 · 써줘 · 적어 |
| 천천히 / Slowly | slowly | 천천히 |
| 아주 / Very | very | 아주 |
| 글자 간격 / Interval | every | 초씩 |
| 화면 / Clear screen | clear | 화면 |
| 화면 지우기 / Clear screen action | screen | 지워 · 지워줘 · 비워 · 비워줘 |
| 줄 / Draw line | draw | 줄 · 가로줄 |
| 줄 긋기 / Draw line action | line | 그어 · 그어줘 |
| 상자 / Box | box | 상자로 |
| 가운데 / Middle | middle | 가운데 |
| 시간 재기 / Start timer | start | 시간재기시작해 · 시간재기시작 |
| 시계 / Timer | timer | — |
| 잰 시간 / Elapsed | elapsed | 잰시간 · 걸린시간 |
| 쿨타임 / Cooldown | cooldown | 쿨타임 · 쿨타임을 · 쿨타임은 · 쿨타임이 |
| 쿨타임 걸기 / Put on cooldown | put | 걸어 · 걸어줘 |
| 쿨타임 끝남 / Ready | ready | 끝났으면 |
| 쿨타임 남음 / On cooldown | — | 남았으면 |
| 쿨타임 끝날 때까지 / Until ready | — | 끝날때까지 |
| 이야기 / Story | story · tale | 이야기 · 얘기 |
| 이야기 천천히 / Story, slowly | slow · slowly | 천천히 |
| 확률 / Chance | chance · chances · probability | 확률로 · 확률 |
| 퍼센트 / Percent | percent · percentage | 퍼센트 · 프로 |
| 확률 앞뒤 말 / Chance connector | with | 의 · 로 · 으로 |
| 확률의 다른 말 / Chance, other wording | time | — |
| 확률 저장 / Chance saved in a name | is · equals | — |
| 군말 / Filler | please | 좀 · 혹시 · 제발 |
28. 조사 부록
이름 뒤에 붙어도 이름의 일부로 보지 않는 조사입니다.
에게서는 · 한테서는 · 에게서 · 한테서 · 으로는 · 로는 · 에게 · 한테 · 에서 · 으로 · 까지 · 부터 · 처럼 · 보다 · 이라도 · 라도 · 만큼 · 밖에 · 에는 · 에서 · 은 · 는 · 이 · 가 · 을 · 를 · 와 · 과 · 도 · 의 · 에 · 로 · 아 · 야 · 랑 · 이랑 · 예요 · 이에요 · 님 · 님께 · 님은 · 님이
29. 오타 복구
동작 단어와 연결어에 한해, Python이 그 줄을 거부한 다음에만 한 글자 오타를 고쳐서 다시 읽어 봅니다(넣기·빼기·바꾸기·이웃 자리 바꿈 한 번). 고칠 방법이 둘 이상이면 고치지 않고 그 자리를 짚어 알려 줍니다. 문자열과 주석은 절대 건드리지 않습니다.
30. 오류 코드
| 코드 | 뜻 |
|---|---|
E0001 | 이 줄은 올바른 Python도 NME도 아닙니다 |
E0101 | 열린 블록이 없는 끝 |
E0102 | 반복문 밖의 break |
E0103 | 열린 조건이 없는 아니면 |
E0104 | 한 조건에 else가 두 번 |
E0105 | 닫는 end가 없는 블록 |
E0106 | 함수 밖의 return |
E0107 | 반복문 밖의 continue |
E0108 | 함수 밖의 yield |
E0109 | 비동기 함수 밖의 await |
E0110 | 비동기 함수 안의 yield from |
E0111 | 비동기 함수 밖의 async for |
E0112 | 비동기 함수 밖의 async with |
E0113 | 바깥 함수가 없는 nonlocal |
E0114 | 모듈 범위 밖의 별표 import |
E0115 | except* 블록 안의 제어 흐름 |
E0116 | 컴프리헨션 안의 yield |
E0117 | 비동기 함수 밖의 비동기 컴프리헨션 |
E0118 | 비동기 제너레이터 안의 반환값 |
E0119 | 충돌하는 global 선언 |
E0120 | 충돌하는 nonlocal 선언 |
E0201 | 말해 뒤의 계산이 하다 말았습니다 |
E0202 | say 뒤의 값을 Python이 읽지 못합니다 |
E0203 | 보여 줄 문장이 올바르지 않습니다 |
E0204 | say에 보여 줄 내용이 없습니다 |
E0211 | 쉼표 뒤의 질문이 비어 있습니다 |
E0212 | 물어볼 내용을 읽지 못했습니다 |
E0213 | 대답을 담을 이름이 없습니다 |
E0221 | 값을 바꾸는 줄을 읽지 못했습니다 |
E0222 | 반복을 빠져나오는 줄을 읽지 못했습니다 |
E0223 | 다음 차례로 건너뛰는 줄을 읽지 못했습니다 |
E0224 | 얼마나 기다릴지 읽지 못했습니다 |
E0225 | 이 목록 문장을 읽지 못했습니다 |
E0226 | 시간 재기를 아직 시작하지 않았습니다 |
E0227 | 확률은 소수점 첫째 자리까지만 정할 수 있습니다 |
E0228 | 확률은 0%부터 100% 사이여야 합니다 |
E0229 | 몇 번째인지는 1부터 셉니다 |
E0230 | 이름에는 띄어쓰기를 쓸 수 없습니다 |
E0231 | 이 이름을 목록으로 만든 적이 없습니다 |
E0232 | 이 이야기 안에 글이 한 줄도 없습니다 |
E0233 | 이어 붙일 때 사이에 무엇을 넣을지가 없습니다 |
E0234 | 목록 문장과 표 문장을 서로 바꿔 썼습니다 |
E0235 | 이 일이 받는 것의 개수가 맞지 않습니다 |
E0236 | 이 일이 바깥의 이름을 읽고 나서 바꿉니다 |
E0237 | 이 이름은 언어 자신이 쓰는 이름입니다 |
E0238 | 읽은 내용을 담을 이름이 없는 파일 읽기 |
E0239 | 따옴표로 감싸지 않은 파일 이름 |
E0240 | 무엇을 넣으려면 목록이어야 합니다 |
E0301 | 조건이 비어 있습니다 |
E0302 | 조건을 읽지 못했습니다 |
E0303 | 무엇을 반복할지 읽지 못했습니다 |
E0304 | 몇 번 반복할지 읽지 못했습니다 |
E0305 | 반복 횟수가 비어 있습니다 |
E0306 | 목록을 하나씩 도는 줄을 읽지 못했습니다 |
E0307 | 세면서 반복하려면 셀 이름이 필요합니다 |
E0401 | NME에 내장된 모듈은 일곱 개이고 이것은 그중에 없습니다 |
E0402 | 최신과 정확한 버전을 함께 적었습니다 |
E0403 | 모듈 버전이 비어 있습니다 |
E0404 | 내장되어 있지 않은 모듈 버전입니다 |
E0405 | 직접 만든 이름을 모듈이 가져갑니다 |
E0406 | 읽지 못한 모듈 줄 |
E0407 | 이 줄이 쓸 수 없는 모듈 경로 |
E0408 | 읽지 못한 모듈 가져오기 줄 |
E0409 | 이미 불러온 모듈을 다시 부른 줄 |
E0410 | 무엇에 쓸지 없는 모듈 도구 |
E0411 | 저장할 값이 비어 있습니다 |
E0412 | 저장할 값을 읽지 못했습니다 |
E0413 | 저장할 이름이 비어 있습니다 |
E0414 | 저장할 이름이 그냥 한 낱말이 아닙니다 |
E0501 | 반복할 줄이 들여쓰여 있지 않습니다 |
E0502 | 조건이 맞을 때 할 일이 없습니다 |
E0503 | 안이 비어 있는 한 줄 블록 |
E0504 | 한 줄에 할 일 하나 |
E0505 | 블록 안의 줄을 NME가 알지 못합니다 |
E0506 | 이 줄이 공백으로 시작합니다 |
E0601 | 여러 동작으로 해석될 수 있는 문장입니다 |
E0602 | 이 줄에서 NME 동작을 찾지 못했습니다 |
E0603 | NME가 모르는 낱말입니다 |
E0604 | 이 줄은 아무 일도 하지 않습니다 |
E0605 | 이 줄에 둥근 따옴표가 있습니다 |
E0606 | 참이 될 수 없는 비교 |
E0701 | 여러 줄에 걸친 문장형 줄 |
E0702 | Python 소스가 올바르지 않습니다 |
E9001 | 알 수 없는 명령 |
E9002 | 모듈 명령에는 추가 인자가 없습니다 |
E9003 | 옵션 뒤에 값이 없습니다 |
E9004 | 알 수 없는 옵션 |
E9005 | 추가로 적힌 파일 |
E9006 | 변환에는 파일이 필요합니다 |
E9007 | 파일을 읽을 수 없습니다 |
E9008 | 파일을 저장할 수 없습니다 |
E9009 | 결과 파일을 덮어쓰지 않습니다 |
E9010 | 네이티브 컴파일이 실패했습니다 |
E9011 | 네이티브 컴파일러를 시작할 수 없습니다 |
E9012 | CPython이 만들어진 Python을 거부했습니다 |
E9013 | Python을 시작할 수 없습니다 |
E9014 | 폴더는 프로그램이 아닙니다 |
E9015 | 프로그램 파일이 없습니다 |
E9016 | 현재 폴더를 읽을 수 없습니다 |
E9017 | 이 폴더에 .nme 프로그램이 없습니다 |
E9018 | 선택 답변을 읽을 수 없습니다 |
E9019 | 선택 답변이 비어 있습니다 |
E9020 | 선택 답변이 목록에 없습니다 |
E9021 | 선택 답변이 여러 프로그램과 일치합니다 |
E9022 | 이 이름과 일치하는 프로그램이 여러 개입니다 |
E9023 | 오류 코드는 한 번에 하나만 확인할 수 있습니다 |
E9024 | 알 수 없는 오류 코드 |
E9025 | pip이 패키지를 설치하지 못했습니다 |
E9026 | 네이티브 프로그램을 시작할 수 없습니다 |
E9027 | 임시 작업 폴더를 만들 수 없습니다 |
E9028 | 가져온 모듈 두 개의 이름이 같습니다 |
E9029 | nme 컴파일은 모듈 가져오기를 지원하지 않습니다 |
E9030 | 패키지 이름이 없습니다 |
E9031 | -o는 nme 네이티브 빌드에서만 사용할 수 있습니다 |
E9032 | 네이티브 동작을 두 개 이상 적었습니다 |
nme ko E0102처럼 부르면 그 코드의 긴 설명을 한국어로 보여 줍니다
(영어는 nme en E0102).