一、前言
这两天看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搓一下,后续将更新新玩法。
兴趣是最好的老师
本文仅供参考,若对您有所帮助,请支持一下,感谢!