猜数字游戏完善版

一、前言

        这两天看python时,看到个简单的猜字小游戏,简单了解了下发现确实蛮基础的,就是一个简单的逻辑判断,但还是有很多不完善的地方。看着不得劲呀,这不得完善一下,以作此文。

二、原始代码

        原始的代码只有简单的逻辑判断,只能根据符合规定的值做判断,不满足的数值程序报错(小数,字符串等),健壮性不是很好。数值固定不随机,趣味稍显不足。
原始代码如下:

number = 7
guess = -1
print("数字猜谜游戏!")
while guess != number:
    guess = int(input("请输入你猜的数字:"))
    if guess == number:
        print("恭喜,你猜对了!")
    elif guess < number:
        print("猜的数字小了...")
    elif guess > number:
        print("猜的数字大了...")

三、优化代码

1、目录结构如下:
在这里插入图片描述

2、检测输入字符是否为数字

def Check_Isdigit_By_HanHanYuan(digit):
    if digit == '':
        return 'is None'
    # 判断正整数, 0 ,负整数
    elif (digit[0] == '+' and digit[1:].isdigit() 
          or digit.isdigit() 
          or digit[0] == '-' and digit[1:].isdigit()):
        return digit
    else:
        return 'others'

3、主程序-----范围判断限制,即输入值在【最小值,最大值】内的整数才能判断。

# 数字猜谜游戏 - 优化版
import random
from 数字猜谜游戏.check_isdigit_by_hanhanyuan import Check_Isdigit_By_HanHanYuan

# ----------------------------前置变量----------------------------#
# 范围最小值
num_start = 1
# 范围最大值
num_end = 10
# 步进值
num_step = 1
# 随机取值  范围为[num_start,num_end]之间,每次取值步进值为num_step
number = random.randrange(num_start, num_end + 1, num_step)
# 初始化guess值
guess = -1
# 实际有效判断次数统计变量
num_count = 0
# 游戏标题
print("————————————————————————————————————————\n"
      "数字猜谜游戏(数值范围外可判定版) By 憨憨缘\n"
      "————————————————————————————————————————")
# 提示语
# print("输入一个在 {0}~{1} 之间的整数".format(num_start, num_end))   #  写法一 此写法需要注意英文{} ,中文{}不会打印
# print("输入一个在 %d~%d 之间的整数" % (num_start, num_end))  # 写法二  类C写法
print(f"PS:随机数已生成,输入一个在 {num_start}~{num_end} 之间的整数\n")  # 写法三 简易写法
# -------------------------------------------------------------#


# --------------------------逻辑判断----------------------------#
while guess != number:
    try:
        a = input("请输入你猜的数字:")
        b = Check_Isdigit_By_HanHanYuan(a)
        if b == 'is None':
            print('输入数字不对哟')
        elif b == a:
            guess = int(a)
            if guess == number:
                print("\n恭喜,你猜对了!")
                num_count += 1
            elif num_start <= guess < number:
                num_count += 1
                print("猜的数字小了...")
            elif num_end >= guess > number:
                num_count += 1
                print("猜的数字大了...")
            else:
                print(f"输入不对哟,请输入{num_start}~{num_end}间的整数")
        else:
            print('输入不对哟,请输入整数')
    # 解决KeyboardInterrupt抛出异常
    except KeyboardInterrupt:
        print("\n主动结束游戏")
        exit()
# -------------------------------------------------------------#
# 实际有效判断次数统计
print(f'猜对数字共匹配了{num_count}次!')
# num_count = 0
print("________________\n游戏结束")

4、主程序-----放宽了判断限制,即在【最小值,最大值】外的整数也能判断。

# 数字猜谜游戏 - 优化版
import random
from 数字猜谜游戏.check_isdigit_by_hanhanyuan import Check_Isdigit_By_HanHanYuan

# ----------------------------前置变量----------------------------#
# 范围最小值
num_start = 1
# 范围最大值
num_end = 10
# 步进值
num_step = 1
# 随机取值  范围为[num_start,num_end]之间,每次取值步进值为num_step
number = random.randrange(num_start, num_end + 1, num_step)
# 初始化guess值
guess = -1
# 实际有效判断次数统计变量
num_count = 0
# 游戏标题
print("————————————————————————————————————————\n"
      "数字猜谜游戏(数值范围外可判定版) By 憨憨缘\n"
      "————————————————————————————————————————")
# 提示语
#  写法一 此写法需要注意英文{} ,中文{}不会打印
# print("输入一个在 {0}~{1} 之间的整数".format(num_start, num_end))   
# 写法二  类C写法
# print("输入一个在 %d~%d 之间的整数" % (num_start, num_end))  
# 写法三 简易写法
print(f"PS:随机数已生成,输入一个在 {num_start}~{num_end} 之间的整数\n")  
# -------------------------------------------------------------#


# --------------------------逻辑判断----------------------------#
while guess != number:
    try:
        a = input("请输入你猜的数字:")
        b = Check_Isdigit_By_HanHanYuan(a)
        if b == 'is None':
            print('输入数字不对哟')
        elif b == a:
            guess = int(a)
            if guess == number:
                print("\n恭喜,你猜对了!")
                num_count += 1
            elif guess < number:
                num_count += 1
                print("猜的数字小了...")
            elif guess > number:
                num_count += 1
                print("猜的数字大了...")
        else:
            print('输入不对哟,请输入整数')
    # 解决KeyboardInterrupt抛出异常
    except KeyboardInterrupt:
        print("\n主动结束游戏")
        exit()
# -------------------------------------------------------------#
# 实际有效判断次数统计
print(f'猜对数字共匹配了{num_count}次!')
# num_count = 0
print("________________\n游戏结束")

5、实际运行效果如下:
在这里插入图片描述

PS:光在后台玩怎么行呢,这不得搞个简单的UI搓一下,后续将更新新玩法。

兴趣是最好的老师

本文仅供参考,若对您有所帮助,请支持一下,感谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值