猜数游戏(Python)

一、实验要求:

(1)在游戏开始时,随机生成一个1~100之间的整数。

(2)在游戏中,玩家有10次机会猜数。如果10次都没有猜中,则游戏失败;否则,游戏成功。

(3)在每一次猜数之后,如果未猜中,应提示猜大了还是猜小了,并提示下一次猜数的上下限。

二、测试用例:

|------------|-------------|------------|
| 测试用例编号 | 测试 | 预期测试结果 |
| 用例1 | 在9次之内猜中 | 游戏成功 |
| 用例2 | 在第10次猜中 | 游戏成功 |
| 用例3 | 猜范围外的数字 | 提示范围 |
| 用例4 | 猜范围内的数字 | 游戏失败 |

三、程序代码:

python 复制代码
import random

def starts_zero(s):
    # 判断该输入是否为以0为开头,避免输入八进制数
    s = str(s)
    if len(s) > 0 and s[0] == '0':
        return False
    else:
        return True

def guess_number_game():
    # 随机生成一个1~100之间的整数
    number_to_guess = random.randint(1, 100)
    print(number_to_guess) 
    attempts = 0
    lower_bound = 1
    upper_bound = 100
    print("欢迎来到猜数游戏!")
    print("我已经想好了一个1到100之间的数字,你有10次机会来猜。")
    
    while attempts < 10:
        attempts += 1
        try:
            
            # 获取用户的猜测
            print("Please enter a number between {0} and {1}:".format(lower_bound,upper_bound),end = ' ')
            gueess = input()
            guess = int(gueess)
            '''attempts += 1'''
            if guess > 0 and guess < 101 and guess <= upper_bound and guess >= lower_bound and starts_zero(gueess):
            # 检查猜测是否正确
                if guess < number_to_guess:
                    print("猜小了!")
                    lower_bound = guess + 1
                elif guess > number_to_guess:
                    print("猜大了!")
                    upper_bound = guess - 1
                else:
                    print("恭喜你,猜对了!你用了{}次机会。".format(attempts))
                    return True  # 游戏成功
            else:
                continue
                
        except ValueError:
            '''print("输入无效,请输入一个整数!")'''
        '''attempts += 1'''# 如果在这里计数的话那么整数和字符两个输入不能同时计数    
    # 如果10次都没有猜中,则游戏失败
    print("很遗憾,你没有在10次机会内猜中数字。")
    return False

# 运行游戏
if guess_number_game():
    print("游戏成功!")
else:
    print("游戏失败。")

四、测试结果:

九次猜中

刚好在第十次猜中

猜范围之外的数字

猜范围内的数字

十次回车

以0为开头

含有英文字母

英文,汉字,数字,回车

含小数点

++如果有其他需求可以留言,博主看到后会更新并解决问题。++

相关推荐
小小张说故事18 分钟前
Python 的 str 为什么设计成不可变?拆开字符串驻留、字符串池,以及 += 拼接到底慢在哪
后端·python
ljt272496066120 分钟前
Python笔记(十一)--Numpy(一)
笔记·python·numpy
时早玖沐25 分钟前
KOOK「找不到语音频道」:同一个错误假设,我犯了三次
python·开源·ai编程
_冷眸_27 分钟前
Python 调用大模型 API:最小请求、Base URL 和 401/404 排查
开发语言·人工智能·python
niucloud-admin38 分钟前
NIUCLOUD PHP SAAS上门家政使用文档:服务保障
java·开发语言·php
Dumbness1 小时前
UIA 读微信群消息没有 id,怎么判断哪条是新的:后缀对齐在翻历史和撤回时整屏重报
python·算法
甜到心里的蛋糕1 小时前
从 QQ 机器人到 B 站 AI 运营:一套可复现的视频流水线踩坑实录
运维·人工智能·python·自动化·视频制作
张驰咨询公司1 小时前
六西格玛Python DOE试验矩阵:3因子2水平生成与验算
python·六西格玛·实验设计·itertools·doe试验矩阵
熊猫钓鱼>_>1 小时前
鸿蒙 PC 三方库适配复盘:libfvad 1.0 —— 把 WebRTC VAD 做成能装进采集链路的静态库
服务器·开发语言·华为·harmonyos·openharmony·适配·鸿蒙pc
Ai-_Man1 小时前
Coze扣子还是不可以导出左侧所有对话,只能点进去单条内容导出,方法不对吗?
开发语言·人工智能·ai·小程序·1024程序员节