# ===== CodeLab: Python 小游戏③:猜单词 Hangman =====
# 来源: https://aoerliang.dpdns.org/articles/game-python-hangman
# 以下代码片段按文章出现顺序拼接, 共 5 段

# ----- 片段 1 (python) -----
import random

words = ["python", "hangman", "computer", "program", "keyboard"]
answer = random.choice(words).lower()

# ----- 片段 2 (python) -----
guessed = [False] * len(answer)

def show():
    line = []
    for i, ch in enumerate(answer):
        line.append(ch if guessed[i] else "_")
    print(" ".join(line))

show()   # 例如: _ _ _ _ _ _

# ----- 片段 3 (python) -----
tried = set()   # 已猜过的字母集合

while True:
    ch = input("猜一个字母: ").lower()
    if len(ch) != 1 or not ch.isalpha():
        print("请输入单个英文字母!")
        continue
    if ch in tried:
        print("这个字母猜过了,换一个吧!")
        continue
    tried.add(ch)
    break

# ----- 片段 4 (python) -----
if ch in answer:
    for i, letter in enumerate(answer):
        if letter == ch:
            guessed[i] = True
    print("猜对啦!")
else:
    lives -= 1
    print(f"没有这个字母,还剩 {lives} 次机会")

# ----- 片段 5 (python) -----
import random

words = ["python", "hangman", "computer", "program", "keyboard"]
answer = random.choice(words).lower()
guessed = [False] * len(answer)
tried = set()
lives = 6

def show():
    print(" ".join(ch if guessed[i] else "_" for i, ch in enumerate(answer)))

while lives > 0 and not all(guessed):
    show()
    ch = input("猜一个字母: ").lower()
    if len(ch) != 1 or not ch.isalpha():
        print("请输入单个英文字母!")
        continue
    if ch in tried:
        print("这个字母猜过了!")
        continue
    tried.add(ch)
    if ch in answer:
        for i, letter in enumerate(answer):
            if letter == ch:
                guessed[i] = True
        print("猜对啦!")
    else:
        lives -= 1
        print(f"没有这个字母,还剩 {lives} 次机会")

if all(guessed):
    print(f"\n恭喜!你猜出了单词: {answer}")
else:
    print(f"\n机会用完啦,答案是: {answer},下次加油!")
