关于作业问题

来源: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)
老师,您好,我根据批改老师的第一步去操作,发现一个问题,我把那个加一,按照老师步骤去注释掉,为什么是这样的????

http://img.mukewang.com/climg/5df76a7f0930b2e904870514.jpg

http://img.mukewang.com/climg/5df76a8509286a5606500239.jpg

http://img.mukewang.com/climg/5df76a910922e01d03400049.jpg

http://img.mukewang.com/climg/5df76a96090c6d9205880068.jpg


写回答

1回答

好帮手乔木

2019-12-17

同学你好:

同学定义的temp开始为0,将批改文件的地方注释后,需要将temp+=1的位置定义在temp和rand1比较大小的条件判断之前即可。

同学出现的情况是将之前的temp+=1注释后,没有在批复文档标注的位置添加temp+=1。(需要考虑程序的执行顺序。先判断猜测的数字是否在猜测区间,如果在猜测区间后,猜测次数才加一并且开始判断temp和rand1的大小比较,否则直接跳过当前循环。)

http://img.mukewang.com/climg/5df838af09c0081706290729.jpg

如果我解决了同学的问题,请采纳!学习愉快^_^。

0

0 学习 · 8160 问题

查看课程