37 — 단어 맞히기: 숨은 단어 게임
행맨 게임은 단어를 숨기고 글자마다 빈칸 하나를 보여 줍니다. 글자를 맞히면
빈칸이 채워지고, 틀리면 기회가 하나 줄어듭니다. 단어는
10 가이드의 랜덤선택이 고르고, 반복은
26 가이드의 메뉴 반복을 방향 대신 글자에 쓴
것입니다.
단계
비밀 단어 목록을 만들고
랜덤선택으로 하나를 무작위로 고릅니다:
실행해 보기 →랜덤 사용 최신 단어들 = ["apple", "grape", "melon", "mango", "orange"] 비밀 = 랜덤선택(단어들) 보여줘 비밀여러 번 실행해 보세요. 실행마다 다른 단어가 나옵니다.
단어를 글자마다 빈칸 하나로 보여 줍니다.
"_"문자열 목록이 숨긴 채로 시작하고," ".join(표시)가 빈칸 사이에 공백을 넣어 출력합니다:
실행해 보기 →비밀 = "grape" 표시 = [] for 글자 in 비밀: 표시.append("_") 보여줘 " ".join(표시)_ _ _ _ _는 글자가 다섯 개라는 뜻입니다.맞힌 글자는
for반복으로 단어를 훑으며 맞는 빈칸에 써 넣어 드러냅니다.for i in range(len(비밀))이 위치마다 방문하고, 맞으면표시[i] = 글자로 빈칸을 채웁니다:
실행해 보기 →비밀 = "grape" 표시 = [] for 글자 in 비밀: 표시.append("_") 물어봐 letter, "글자 하나를 입력하세요: " for i in range(len(비밀)): if 비밀[i] == letter: 표시[i] = letter 보여줘 " ".join(표시)a를 입력하면_ _ _ _ _가_ _ a _ _가 됩니다.전체 게임에는 기회 세는 변수와 승리·패배 확인이 더해집니다.
while 남은기회 > 0이 계속 물어보고, 틀린 글자는남은기회를 줄이며,"_" not in 표시는 모든 글자를 찾았다는 뜻이고,break가 반복을 떠납니다.daneo-machigi.nme로 저장하세요:
실행해 보기 →# 숨은 단어 게임: 비밀 단어의 글자를 맞혀 보세요. # 실행: nme 실행 daneo-machigi 랜덤 사용 최신 단어들 = ["apple", "grape", "melon", "mango", "orange"] 비밀 = 랜덤선택(단어들) 표시 = [] for 글자 in 비밀: 표시.append("_") 남은기회 = 6 추측한 = [] 보여줘 "단어를 골랐어요. 글자 수: " + str(len(비밀)) while 남은기회 > 0: 보여줘 " ".join(표시) 보여줘 "남은 기회: " + str(남은기회) 물어봐 letter, "글자 하나를 입력하세요 (q로 포기): " 만약 letter == "q": 보여줘 "정답은 " + 비밀 break if letter in 추측한: 보여줘 "이미 입력한 글자예요: " + letter continue 추측한.append(letter) 만약 letter in 비밀: for i in range(len(비밀)): if 비밀[i] == letter: 표시[i] = letter 보여줘 letter + " 맞췄어요!" if "_" not in 표시: 보여줘 " ".join(표시) 보여줘 "승리! 정답은 " + 비밀 break else: 남은기회 = 남은기회 - 1 보여줘 letter + " 틀렸어요" if 남은기회 == 0: 보여줘 "패배. 정답은 " + 비밀실행하고 글자 네 개를 입력한 다음 포기합니다:
printf 'e\na\nr\nq\n' | nme 실행 daneo-machigi단어를 골랐어요. 글자 수: 6 _ _ _ _ _ _ 남은 기회: 6 글자 하나를 입력하세요 (q로 포기): e 맞췄어요! _ _ _ _ _ e 남은 기회: 6 글자 하나를 입력하세요 (q로 포기): a 맞췄어요! _ _ a _ _ e 남은 기회: 6 글자 하나를 입력하세요 (q로 포기): r 맞췄어요! _ r a _ _ e 남은 기회: 6 글자 하나를 입력하세요 (q로 포기): 정답은 orange비밀 단어는 무작위로 고르므로 여러분이 실행하면 다른 단어와 다른 빈칸 모양이 나옵니다.
직접 해보기
대문자도 받아들이게 게임을 고쳐 보세요. 물어봐 letter, ... 바로 뒤에
letter = letter.lower()를 넣으면 A를 입력해도 a와 같은 글자로
맞힙니다:
비밀 = "grape"
표시 = []
for 글자 in 비밀:
표시.append("_")
물어봐 letter, "글자 하나를 입력하세요: "
letter = letter.lower()
for i in range(len(비밀)):
if 비밀[i] == letter:
표시[i] = letter
보여줘 " ".join(표시)
실행해 보기 →그런 다음 전체 게임에도 같은 줄을 넣고 A와 G로 시험해 보세요.
배운 것
랜덤선택(단어들)이 목록에서 비밀 단어를 고릅니다."_"목록이 글자마다 빈칸 하나를 보여 주고," ".join(표시)가 출력합니다.range(len(비밀))을 도는for반복이 맞는 글자를 각각 드러냅니다.while 남은기회 > 0이 기회를 줄이고break가 반복을 일찍 떠납니다.