老师,我的基本功能算是实现了,您帮忙看下需要改进的地方吧!
"""guide_page(guide_word)函数用于创建用户输入和提示的界面"""
import random
import sys
from datetime import datetime
def guide_page(guide_word):
# 输出标题
if guide_word == 0:
print("{Symbols}欢迎进入数字猜猜猜小游戏{Symbols}".format(Symbols = "*" * 20))
elif guide_word == 1:
print('您输入的数字区间相同,请重新启动游戏')
elif guide_word == 2:
print('*' * 20)
#自定义数字类型判断函数,判断指定的值是否为数字
def all_num(n):
#用isdigit方法判断n是否为数字
n_results = n.isdigit()
return n_results
#自定义数值合法性判定函数,判定指定序列中的数值是否相等以及记录数字区间起始位置的值是否大于记录数字区间终止位置的值
def num_legal(lst = []):
#判断用户输入两个区间值(保存在列表),是否相同
if lst[0] == lst[1]:
guide_page(1)
sys.exit()
# 判断用户输入两个区间值(保存在列表),初始值是否大于终止位置的值
elif lst[0] > lst[1]:
print("您输入的数字区间大小有误!!请重新启动程序。")
sys.exit()
#如果以上-0条件都不满足则返回一个数字1
else:
return 1
#自定义产生指定区间随机数函数
def set_final_num(num1,num2):
#用来保存正确输入后产生的随机数
rand_i = 0
#定义一个用来保存用户输入的数字列表
num_ipt_lst = [num1,num2]
#用filter筛选用户输入的两个数字是否是数字
rest = filter(all_num , num_ipt_lst)
#将获取的值转换成列表
rest_list = list(rest)
#如果列表不等于2,则表示肯定有一个或两个都不是数字类型
if len(list(rest_list)) == 2:
#将字符串数字类型转换成int型数字列表
rest_list = list(map(int,rest_list))
if num_legal(rest_list) == 1:
rand_i = random.randint(rest_list[0],rest_list[1])
#print(rand_i) #测试
return rand_i
else:
#列表长度不等于2,肯定有非法字符,所以输出如下
print("你输入的为非数字字符,请重新启动!")
sys.exit()
''' 功能描述:判定所输入的数值是否在指定的区间'''
def check_num_legal(num):
#定义一个布尔型用来判定用户猜的数字是否在区间内,初始值为False
is_primer = True
if num >= int(i) and num <= int (j):
#如果用户判定属于区间则返回布尔值True
is_primer = False
else:
print("对不起你输入的数字未在指定区间!!!")
return is_primer
'''定义打开日志写入玩家猜测的时间和次数、以及数字,并且赋值给变量名'''
def write_record(times,value):
#打开文件record.txt用读写的模式将用户信息写入日期
with open("record.txt",'a+',encoding = "UTF-8") as f:
a = datetime.now()
f.write("{0}:第{1}次您猜测的数字为:{2}\n".format(datetime.now(),times,value))
"""依据所产生的随机数字(rand1),提示玩家输入猜测数字并进行比对直到猜测到正确数字"""
def main(rand1):
#记录用户猜测数字的次数,默认为整形0
temp = 0
#给定无限循环用来完成用户的猜测过程
while True:
guess_num = int(input("请继续输入你猜测的数字:"))
if check_num_legal(guess_num) == True:
continue
temp += 1
write_record(temp, guess_num)
if guess_num == rand1:
print("恭喜你!只用了{0}次就赢得了游戏".format(temp))
sys.exit()
elif guess_num < rand1:
print("Lower than the answer")
guide_page(2)
continue
else:
print("Higher than the answer")
guide_page(2)
continue
if __name__ == '__main__':
guide_page(0)
#用户输入区间起始值
i = input("数字区间起始值:")
#用户输入区间终止值
j = input("数字区间终止值:")
rand_section = [i,j]
print("所产生的随机数区间是:",rand_section)
#接受产生的随机数
r_rand = set_final_num(i, j)
#哈哈,先打印答案,有点智障
print("答案:{0}".format(r_rand))
#调用主函数,我们来快乐的游戏吧
main(r_rand)
正在回答 回答被采纳积分+1
#自定义产生指定区间随机数函数 def set_final_num(num1,num2): #用来保存正确输入后产生的随机数 rand_i = 0 #定义一个用来保存用户输入的数字列表 num_ipt_lst = [num1,num2] #用filter筛选用户输入的两个数字是否是数字 rest = filter(all_num , num_ipt_lst) #将获取的值转换成列表 rest_list = list(rest) #如果列表不等于2,则表示肯定有一个或两个都不是数字类型 if len(list(rest_list)) == 2: #将字符串数字类型转换成int型数字列表 rest_list = list(map(int,rest_list)) if num_legal(rest_list) == 1: rand_i = random.randint(rest_list[0],rest_list[1]) #print(rand_i) #测试 return rand_i else: #列表长度不等于2,肯定有非法字符,所以输出如下 print("你输入的为非数字字符,请重新启动!") sys.exit()
rest = filter(all_num, num_list)
rest_list = list(rest)
all_num()里面是isdigit函数,返回的是True和False,为什么用来判断数字呢?
我尝试list(rest)返回的是一个空列表,又是什么原因呢
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星