关于作业问题
来源:3-2 项目作业
为学习而奋斗
2019-12-16 19:29:31
'''导入对应的模块'''
import random
import sys
from datetime import datetime
#设置星号打印次数
def num_anem():
return "*" * 30
def guide_page(guide_word):
'''提示玩家进入游戏,输出所示信息'''
print('{}{}{}'.format(num_anem(),str(guide_word),num_anem()))
def all_num(n):
'''判断指定的值是否为数字'''
if n.isdigit():
return n
#若输出不是数字,则让用户重新启动
else:
print("您输入的为非数字字符,请重新启动!")
sys.exit()
def num_legal(ls):
'''判定指定序列中的数值是否相等
以及记录数字区间起始位置的值
是否大于记录数字区间终止位置的值
'''
#判断初始值和终止值是否相等
if int(ls[0]) == int(ls[1]):
print("您输入的区间数字相同!!请重新启动程序。")
sys.exit()
#判断初始值是否大于终止值
elif int(ls[0]) > int(ls[1]):
print("您输入的数字区间大小有误!!请重新启动程序。")
sys.exit()
#反之返回值1
else:
return 1
def set_final_num(num1,num2):
'''产生一个位于参数值区间以内的
起始值和终止值,并将其保存在列表中
'''
list1 = [num1,num2]
#利用内置函数filter()及思路分析2中的all_num(n)过滤以确保输入值全部为数字
num_filter = list(filter(lambda n :all_num(n),list1))
#调用自定义函数进入等值判断
num_legal(num_filter)
#打印出随机数
print("所产生的随机数字区间为:{}".format(num_filter))
#使用random进行随机数字
return random.randint(int(num1),int(num2))
def check_num_legal(num):
'''判定所输入的数值是否在指定的区间'''
if num < int(i) or num > int(j):
return 1
def write_record(times,value):
'''将玩家每一次猜测数字和本次猜测次数两项信息写入日志文件'''
#将文件写入
file_time = 'record.txt'
#打印当前时间
date = datetime.now()
#使用with语法操作日志文件,将获取到的参数和时间信息以追加方式写入日志文件
with open(file_time,'a',encoding='utf-8') as f:
f.write('{}: 第{}次猜测的数字为:{}'.format(date,value,times))
f.write('\n')
def main(rand1):
temp = 0
'''提示玩家输入猜测数字并进行比对直到猜测到正确数字'''
while True :
# temp += 1
num_int = input("请继续输入您猜测的数字:")
num_int = int(num_int)
#若指定数字不在区间则打印输出并返回
if check_num_legal(num_int):
print("对不起您输入数字未在指定区间!!!")
continue
#判断随机数字小于用户给定数字
if num_int < rand1:
print("*" * 10)
print("Lower than the answer")
#判断随机数字大于用户给定数字
elif num_int > rand1:
print("*" * 10)
print("Higher than the answer")
#当随机数字等于当前数字则输出并终止
elif num_int == rand1:
print("恭喜您!只用了{}次就赢得了游戏".format(temp))
write_record(num_int,temp)
break
#将每一次的时间、数字、次数打印到文件里面
write_record(num_int,temp)
if __name__ == "__main__":
'''最后进行输入用户给定的数字,在进行上面语句功能的实现'''
num_name = '欢迎进入数字猜猜猜小游戏'
guide_page(num_name)
i = input("数字区间起始值:")
j = input("数字区间终止值:")
rand1 = set_final_num(i,j)
main(rand1)
老师,您好,我根据批改老师的第一步去操作,发现一个问题,我把那个加一,按照老师步骤去注释掉,为什么是这样的????
1回答
同学你好:
同学定义的temp开始为0,将批改文件的地方注释后,需要将temp+=1的位置定义在temp和rand1比较大小的条件判断之前即可。
同学出现的情况是将之前的temp+=1注释后,没有在批复文档标注的位置添加temp+=1。(需要考虑程序的执行顺序。先判断猜测的数字是否在猜测区间,如果在猜测区间后,猜测次数才加一并且开始判断temp和rand1的大小比较,否则直接跳过当前循环。)
如果我解决了同学的问题,请采纳!学习愉快^_^。
相似问题
回答 1
回答 1