Python - 综合练习

读书须用意,一字值千金。

以一个文本游戏 – 经典的 Hangman 猜词游戏为例。
游戏规则如下:

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

在这里插入图片描述

源码_V1

def hangman(word):
        wrong = 0 # 记录错误的次数
        stages = [
        " _____    ",
        "|     |   ",
        "|     |   ",
        "|     0   ",
        "|    /|\  ",
        "|    / \  ",
        "|________ "
        ]
        rletters = list(word)#形成被猜列表['c', 'a', 't']
        board = ["__"] * len(word) #列表乘法['__', '__', '__']
        win = False
        print("Welcome to Hangman")
        while wrong < len(stages) : #如果猜错的次数小于 Hangman 列表的长度
            print("\n")
            char = input("Guess a letter") #用户输入,猜测字母
            if char in rletters:  # 如果猜测的字母在被猜列表中
                cind = rletters.index(char) #取出被猜中的字母的索引
                board[cind] = char # 将 '_' 变为字母
                rletters[cind] = '$'#将被猜测列表中原字母位置被替换为 '$',使得该位不再参与遍历,不再与下一个 char 进行比较
                print((" ".join(board))) #输出当前猜测的进度 board 列表
            else:
                # print((" ".join(board))) #输出当前猜测的进度 board 列表
                print("\n".join(stages[0:wrong+1]))
                wrong += 1 #如果用户猜测不正确则 wrong+1

            if "__" not in board:
                print("\n\nYou win!")
                print(" ".join(board))# board 列表种每一个元素以空格隔开输出
                win = True
                break
        if not win:
            # print("\n".join(stages[0:e]))
            print("You lose! It was {}.".format(word))#提示游戏失败,并输出最终答案

def main():
    hangman("cat")

if __name__=='__main__':
    main()

源码_V2

该版本较第一个版本的区别是 while count<len(stages) 以猜错字数小于打印字符的长度为条件进行 while 循环如果猜测全部正确则打印 "you win" 并使用 return 0 终止程序如果在打印字符全部打印出来后还是没能全部猜出来,则 while 循环结束并打印 "you are failed"

def hangman(word):
    stages = [
        " _____    ",
        "|     |   ",
        "|     |   ",
        "|     0   ",
        "|    /|\  ",
        "|    / \  ",
        "|________ "
        ]
    rletters = list(word)#形成被猜列表['c', 'a', 't']
    board = ["__"] * len(word) #列表乘法['__', '__', '__']
    win = False
    print("Welcome to Hangman")
    count = 0
    limit = len(stages)
    while count < limit:
        guess = input("\nguess the char: ")
        if guess in rletters:
            addr = rletters.index(guess)
            board[addr] = guess
            rletters[addr] = '$'
        else:
            count += 1

        print(" ".join(board))
        # print("猜错次数:",count)
        print("\n".join(stages[0:count]))
        if "__" not in board:
            print("You win")
            return 0

    print("You are failed")
def main():
    hangman("cat")

if __name__=='__main__':
    main()
                                                                                                                                                                                             猪头
                                                                                                                                                                                         2020.4.23
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python PSO-ELM(Particle Swarm Optimized Extreme Learning Machine)是一种基于粒子群优化算法的高效学习机器学习框架。它综合了粒子群优化算法和极限学习机算法的优点,能够更加高效地进行回归和分类等任务。 Python PSO-ELM的主要功能包括模型训练、参数优化和预测等。在模型训练阶段,PSO算法用于优化ELM模型的隐层节点权重和偏置,从而提高模型的泛化性能。在参数优化阶段,Python PSO-ELM提供了多种评价指标和参数调整选项,可以根据用户需求进行精细化调整。在预测阶段,Python PSO-ELM支持单样本、批量和文件预测等多种使用方式,具备良好的可移植性。 总之,借助Python PSO-ELM,我们可以更加高效地利用机器学习技术解决现实问题。它具有良好的可扩展性和易用性,适合于不同层次的用户学习和使用。 ### 回答2: Python pso-elm是一种基于粒子群优化(PSO)算法和极限学习机(ELM)模型的机器学习方法。这种方法结合了PSO算法和ELM模型的优点,能够在预测、分类和模式识别等方面取得很好的结果。 PSO算法是一种群体智能算法,模拟鸟群寻找食物的过程,通过不断调整粒子实现全局最优解。而ELM模型是一种单层的前馈神经网络模型,其隐含层节点数不需要预先设定,可以通过随机初始化来自动调整。 Python pso-elm方法通过先对数据进行特征提取,然后利用PSO算法进行ELM模型的训练,得到最优解,从而实现对数据的预测、分类和模式识别等任务。与传统的神经网络相比,Python pso-elm算法不仅有着更快的训练速度和更好的预测效果,还具有对数据的自适应学习能力,适用于各种复杂的数据处理问题。 总之,Python pso-elm是一种非常有用的机器学习方法,可以有效地处理各种数据,具有准确、可靠、快速等特点,对于工业控制、信号处理、物联网、人工智能等领域都有着广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值