《python无师自通》第十章 综合练习hangman

本章将结合目前所学的知识,开发一个文本游戏—经典的 Hangman 猜词游戏。如 果之前没玩过,可先了解游戏的大致规则。

1.玩家一挑选一个秘密单词,单词中有多少个字母,则划多少条横线(这里用下划
线表示)。
2.玩家二每次猜一个字母。
3.如果玩家二猜测的字母正确,玩家一将下划线修改为正确的字母。在本书的游戏
版本中,如果单词中有一个字母出现两次,玩家二也必须猜两次。如果玩家二猜测错误,
玩家一则画出上吊的人的一部分身体(从头部开始),如图 10-1 所示。

#第一部分
def hangman(word):
    wrong = 0#游戏要尝试次数
    stages = ["",
              "_____     ",
              "|         ",
              "|      |  ",
              "|      0  ",
              "|     /|\ ",
              "|     / \ ",
              "|         ",
              "|         "
              ]
    rletters = list(word)#答案单词转化为单个字母
    board = ["__"] * len(word)#画填词线
    win = False#初始默认是错
    print("weilcom to Hangman!")#欢迎词
    #进入猜词环节
    while wrong < len(stages) - 1:
        print("\n")#空一行开始游戏
        char = input("猜个字母:")#输入一个字母
        if char in rletters :#如果猜的字母是对的
            cind = rletters.index(char)#找到才的字母对应正确的的位置
            board[cind] = char#在填词线上填上这个字母,这个就可以呈现出来了
            rletters[cind] = "$"#猜对的字母就换掉,避免再猜一次
        else:
            wrong += 1#猜错了话就吊一下
        print((" ".join(board)))#把答对的词显示出来
        e = wrong + 1
        print("\n".join(stages[0:e]))
        if "__" not in board:
            print("You Win!")
            print(" ".join(board))
            win = True
            break
        if not win:
            print("\n".join(stages[0:wrong]))
            print("You lose!It was {}.".format(word))

hangman("cat")
            


挑战练习

修改本章编写的游戏,要求从一个单词列表中随机选择单词。

#第一部分
import random
words = ("cat","dog","pig")
def hangman(word):#创建一个函数
    wrong = 0#记录玩家二猜错了多少个字母
    stages = ["",
              "_____     ",
              "|         ",
              "|      |  ",
              "|      0  ",
              "|     /|\ ",
              "|     / \ ",
              "|         ",
              "|         ",
              ]
    rletters = list(word)
    board = ["__"] * len(word)
    win = False
    print("Welcome to Hangman")
#第二部分
    while wrong < len(stages) - 1:#循环9次
        print("\n")
        msg = "猜一个字母:"
        char = input(msg)
        if char in rletters :
            cind = rletters.index(char)#定位猜对的字母的索引
            board[cind] = char#把横线替换成猜对的字母
            rletters[cind] = "$"
        else:
            wrong += 1
        print(("|".join(board)))
        e = wrong + 1
        print("\n".join(stages[0:e]))
        if "__" not in board:
            print("You Win!")
            print(" ".join(board))
            win = True
            break
        if not win:
            print("\n".join(stages[0:wrong]))
            print("You lose!It was {}.".format(word))

hang = random.choice(words)
hangman(hang)

发布了42 篇原创文章 · 获赞 0 · 访问量 265

猜你喜欢

转载自blog.csdn.net/qq_43169516/article/details/103938193