Python学习--一个逻辑推理的猜数字的游戏

修订Pico Fermi Bagels猜数字游戏代码,仅用于学习Python。

运行界面如下:

修订的代码如下:

# //
# 提升逻辑思维猜数字小游戏
# BY:Al Sweigart al@inventwithpython.com
# 翻译:诚外无物
# 说明:一个逻辑推理游戏,根据线索猜三位数。游戏根据输入
# 给出提示:
# 猜对一位数字且数字位置正确,提示语:苹果
# 猜对一位数字但数字位置不对,提示语:香蕉
# 如果猜测数字和位置都不正确,提示语:桃子
# //

import random
import sys

NUM_DIGITS = 3            # (!) 数字位数
MAX_GUESSES = 10          # (!) 猜测次数

def main():
    # 打印游戏说明
    print('''***提升逻辑推理的一个猜数字小游戏***
*
*游戏程序会产生一个{}位的没有重复的数字,请玩家尝试猜一下它是什么。
*根据玩家输入,此游戏提供线索,当你看到如下的提示语,分别意味的是:
*    苹果              一个数字是正确的,且位置正确。
*    香蕉              一个数字是正确的,但位置不正确。
*    桃子              没有正确的数字。
*          
*举个例子,正确数字是248 但是你猜测的是 843
*给你提示的线索是: 苹果 香蕉。
'''.format(NUM_DIGITS))
        
    while True:
        # secretNum存储了玩家所要猜测的秘密数字
        secretNum = getSecretNum()
        #print(secretNum)
        print('***神秘的数字已经产生了,祝你好运。***')
        print('***您最多有 {} 次机会来猜测哦,开始吧。***\n'.format(MAX_GUESSES))
        
        numGuesses = 1
        while numGuesses <= MAX_GUESSES:
            guess = ''

            # 保持循环,直到玩家输入正确的猜测数字:1)位数,2)均为十进制数字字符,即0-9字符
            while len(guess) != NUM_DIGITS or not guess.isdecimal():
                print('\n猜测次数:< {} >'.format(numGuesses))
                guess = input('>>> ')

                # 输入quit退出游戏
                if guess.lower().startswith('quit'):
                    sys.exit()
                       
            # 获取线索
            clues = getClues(guess,secretNum)
            print(clues)

            # 增加猜测次数
            numGuesses += 1

            if guess == secretNum:
                break  # 玩家猜对了数字,结束当前循环
            if numGuesses > MAX_GUESSES:
                print('抱歉,您的猜测机会使用完毕了。')
                print('需要猜测的数字答案是: {} '.format(secretNum))
            
        # 询问玩家是否想再玩一次   
        print('您是否要再玩一盘?(yes or no)')
        if not input('> ').lower().startswith('y'):
            break
        print('谢谢你再玩一次。')

def getSecretNum():
    """返回唯一一个长度为NUM_DIGITS位数字:类型为包含3位数字的字符串"""
    numbers = list('0123456789')   # 创建数字0-9的列表
    random.shuffle(numbers)        # 将它们随机排列

    # 获取秘密数字列表中的前NUM_DIGITS数字
    secretNum = ''
    for i in range(NUM_DIGITS):
        secretNum += str(numbers[i])
    return secretNum


def getClues(guess,secretNum):
    '''返回一个由Pico、Fermi、Bagels组成的字符串,用于猜测一个三位数'''
    if guess == secretNum:
        return '恭喜您,猜对了!'
    
    clues = []

    for i in range(len(guess)):
        if guess[i] == secretNum[i]:
            # 正确的数字位于正确的位置
            clues.append('苹果')
        elif guess[i] in secretNum:
            # 正确的数字不在正确的位置
            clues.append('香蕉')

    # 线索为空,没有正确的数字
    if len(clues) == 0:
        return '桃子' 
    else:
        # 将线索clues列表按字符顺序排序,使其不会泄露数字信息
        #clues.sort()
        # 返回一个由clues列表中所有元素组成的字符串
        return ' '.join(clues)


if __name__ == '__main__':
    main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/360461.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

rust学习基于tokio_actor聊天服务器实战(一 )

前言 tokio是Rust中使用最广泛的异步Runtime&#xff0c;它性能高、功能丰富、便于使用&#xff0c;是使用Rust实现高并发不可不学的一个框架 Actor 背后的基本思想是产生一个独立的任务&#xff0c;该任务独立于程序的其他部分执行某些工作。 通常&#xff0c;这些参与者通过使…

如何使用postman进行接口自动化测试?

1、什么是自动化测试&#xff1f; 把人对软件的测试行为转化为由机器执行测试行为的一种实践。 例如GUI自动化测试&#xff0c;模拟人去操作软件界面&#xff0c;把人从简单重复的劳动中解放出来&#xff0c;本质是用代码去测试另一段代码&#xff0c;属于一种软件开发工作&a…

TRIZ:打破便携与功能矛盾,卫星通信领域的新曙光!

在当今的卫星通信领域&#xff0c;便携性与功能性的矛盾一直是困扰着研发人员的一大难题。如何在保持设备便携的同时&#xff0c;确保其功能的完善和稳定&#xff0c;成为了业界关注的焦点。而解决这一问题的关键&#xff0c;或许正隐藏在TRIZ这一强大的创新方法论之中。 TRIZ&…

【PyCharm教程】PyCharm 安装、卸载和升级包

PyCharm 为特定的 Python 解释器提供了安装、卸载和升级 Python 包的方法。默认情况下&#xff0c;PyCharm 使用 pip 来管理项目包。对于 Conda 环境&#xff0c;您可以使用conda 包管理器。 在 PyCharm 中&#xff0c;您可以在Python 包工具窗口和 Python 解释器Settings/Pre…

暴雨受邀出席太原市人工智能行业协会年度大会

2024年1月26日&#xff0c;太原市人工智能行业协会第二届二次会员大会暨2024年年会成功召开。太原市委、市工商联、市大数据应用中心、市政协经济委员会以及太原市科技局的专家领导&#xff0c;与三百多名来自各行业的人工智能企业家和协会会员一同参加了本次盛会&#xff0c;共…

(十一)springboot实战——springboot3下关于WebFlux项目的一些常用功能整合

前言 本节内容主要是对webflux项目一些常用功能的介绍&#xff0c;例如系统集成swagger接口文档&#xff0c;方便接口测试以及前后端项目联调测试&#xff1b;使用actuator完成系统各种指标的监控功能&#xff1b;系统使用logback日志框架完成项目日志的收集&#xff1b;使用过…

项目:博客

1. 运行环境&#xff1a; 主机 主机名 系统 服务 192.168.223.129 Server_Web Linux Web 192.168.48.131 Server-NFS-DNS Linux NFS/DNS 2. 基础配置 配置主机名&#xff0c;静态IP地址 开启防火墙并配置 部分开启SElinux并配置 服务器之间使用同ntp.aliyun.com进行…

eBay测评自养号下单需要满足哪些技术要求?养号优势有哪些?

自养号测评环境搭建系统涉及几个主要环节&#xff1a; 1.系统环境&#xff1a;用于登录和管理多个账号&#xff0c;需具备防关联功能&#xff0c;每个账号使用独立IP&#xff0c;确保完全隔离无关联问题。 2.高质量网络环境&#xff1a;需要国外家庭住宅IP&#xff0c;纯净度…

开发者带你了解山海鲸智慧社区解决方案

作为山海鲸可视化软件的开发者&#xff0c;我们深知在智慧社区建设中&#xff0c;数据可视化对于提升社区管理效率和居民生活品质的重要性。因此在提供人人都能免费使用的产品基础上&#xff0c;特结合山海鲸可视化软件优势打造智慧社区解决方案&#xff0c;本文将为您详细介绍…

sketchup草图大师模型网怎么样?

SketchUp草图大师模型网是一个提供SketchUp模型下载和分享的平台&#xff0c;如建e网等&#xff0c;用户可以在上面找到大量的SU模型&#xff0c;并学习一些SketchUp的使用技巧。该网站模型种类丰富&#xff0c;涵盖了建筑、景观、室内等不同领域&#xff0c;同时也有一些教程&…

6天获邀请函|食品科学老师赴英国Quadram研究所访学交流

C老师拟申报CSC国家公派访问学者项目&#xff0c;因DIY申请无果且申报期临近而求助于我们。依本人要求&#xff0c;我们迅速开展了全方位申请&#xff0c;几天内获得近十个反馈&#xff0c;最终其选择了不需要面试且不收板凳费的英国Quadram研究所&#xff0c;此时距离开展申请…

2024新鲜出炉 Java集合常见面试题总结(上)

2024新鲜出炉 Java集合常见面试题总结(上) 文章目录 2024新鲜出炉 Java集合常见面试题总结(上)集合概述Java 集合概览说说 List, Set, Queue, Map 四者的区别&#xff1f;集合框架底层数据结构总结ListSetQueueMap 如何选用集合?为什么要使用集合&#xff1f; ListArrayList 和…

SOME/IP SD 协议介绍(五)使用SOME/IP-SD宣布非SOME/IP协议的协议。

使用SOME/IP-SD宣布非SOME/IP协议的协议。 除了SOME/IP之外&#xff0c;车辆内部还使用其他通信协议&#xff0c;例如用于网络管理、诊断或闪存更新。这些通信协议可能需要传递服务实例或具有事件组。 对于非SOME/IP协议&#xff0c;应使用特殊的服务ID&#xff0c;并使用配置…

最新盘点!2024年最好用的十大进销存管理系统

深度盘点国内外十大进销存管理系统&#xff1a;简道云进销存、Oracle NetSuite、金蝶精斗云、用友、浪潮云进销存、傻瓜进销存、旺店通、生意专家、QT9、Linnworks。 进销存指的是企业管理过程中采购&#xff08;进&#xff09;——入库&#xff08;存&#xff09;——销售&am…

20240127在ubuntu20.04.6下配置whisper

20240131在ubuntu20.04.6下配置whisper 2024/1/31 15:48 首先你要有一张NVIDIA的显卡&#xff0c;比如我用的PDD拼多多的二手GTX1080显卡。【并且极其可能是矿卡&#xff01;】800&#xffe5; 2、请正确安装好NVIDIA最新的驱动程序和CUDA。可选安装&#xff01; 3、配置whispe…

备战蓝桥杯---数据结构与STL应用(入门3)

我们先来一道题作为过渡&#xff1a; 我们只需枚举n,选出左右第一个小于它高度的坐标即可&#xff0c;于是我们可以用两个方向的优先队列来维护&#xff0c;下面是AC代码&#xff1a; #include<bits/stdc.h> using namespace std; #define int long long int n; struct …

基于ssm和微信小程序的健身房私教预约管理系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

Word莫名其妙开启兼容模式将其永久取消的方法

这是因为Word模板文件被意外更改了 找到Word模板文件&#xff0c;目录在C:\Users\15976\AppData\Roaming\Microsoft\Templates 15976替换成你自己的用户名&#xff0c;不确定的就先点进C/Users看一看&#xff0c; AppData是隐藏文件夹&#xff0c;显示隐藏文件夹才能看见&am…

MySQL备份和恢复(二)mysqldump

注意&#xff1a;mysqldump是完全备份 一、mysqldump备份命令 1、 备份数据库 含创建库语句 &#xff08;1&#xff09;备份指定数据库 完全备份一个或多个完整的库&#xff0c; mysqldump -uroot -p[密码] --databases 库名1 [库名2].. >/备份路径/备份文件名.sql#导出…

安泰高压放大器电路设计方案是什么

高压放大器是电子设备中常用的一种放大器类型&#xff0c;用于将低电压信号放大到高电压输出。本文将介绍高压放大器电路设计的基本原理和方案&#xff0c;涵盖关键设计考虑因素以及常用的电路拓扑结构。 一、设计考虑因素 放大倍数&#xff1a;高压放大器的设计首要考虑因素是…