服务期快到了,老师有没有这道题的答案啊?

服务期快到了,老师有没有这道题的答案啊?

还是有几点解不出来


import random
import sys
from datetime import datetime


def guide_page(guide_word):
   """提示玩家进入游戏"""

   return '{0}{1}{0}'.format('*'*20,guide_word,'*'*20)

def all_num(n):
   """判断指定的值是否为数字"""
   return n.isdigit()

def num_legal(ls):
   """判定指定序列ls中的数字符合正常逻辑合法性是否相等以及记录数字区间起始位置的值是否大于记录数字区间终止位置的值
   ::param ls:存储起始位置和终止位置的列表
   ::return:判断结果
   """

   if ls[0] == ls[1]:
       print('您输入的区间数字相同!!请重新启动程序。')
       sys.exit()
   elif int(ls[0] > ls[1]):
       print('您输入的数字区间大小有误!!请重新启动程序。')
       sys.exit()
   else:
       return 1

def set_final_num(num1,num2):
   """ 根据参数值,产生一个位于参数值区间以内的随机数"""
   num_range = list(filter(all_num,ls))

   if len(num_range) == 2:
       if num_legal(num_range):
           return random.randint(int(num1),int(num2))
       else:
           print("您所输入的为非数字字符!!请重新启动程序。")
       sys.exit()

def  check_num_legal(num):
   """判定所输入的数值是否在指定的区间"""
   if i <= int(num) <= j:
       return True
   else:
       print("对不起您输入的数字未在指定区间!!!")
       return False

def write_record(times,value):
   """将玩家每一次猜测数字和本次猜测次数两项信息写入日志文件"""
   file_name = 'record.txt'
   with open(file_name,'a',encoding='utf-8') as f:
       f.write('{0}:第{1}次您猜测的数字为:{2}'.format(datetime.now(),times,value))
       f.write('\n')
       
def main(rand1):
   """依据所产生的随机数字(rand1),提示玩家输入猜测数字并进行比对直到猜测到正确数字"""
   number_ = 0
   while True:
       temp = int(input("请继续输入您猜测的数字:"))
       if all_num(temp) == True:
           print("对不起您输入的数字未在指定区间!!!")
           number_ += 1

       write_record(number_,temp)
       if check_num_legal(temp) == False:
           continue
       else:
           print("*"*20)
        if temp < rand1:
            print("Lower than the answer")
        elif temp > rand1:
            print("Higher than the answer")
        else:
            print("恭喜您!只用了{0}次就赢得了游戏".format(number_))
        break


if __name__ == '__main__':
   guide_word = '欢迎进入数字猜猜猜小游戏'
   guide_page(guide_word)

   i = int(input('数字区间起始值: '))
   j = int(input('数字区间终止值: '))
   int_lis = num_legal(i,j)
   print("所产生的随机数字区间为:",[i,j])

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕元宝 2020-09-11 18:32:21

同学你好:

这个函数的主要目的是判断用户输入的区间数字是否有误,

http://img1.sycdn.imooc.com//climg/5f5b50f1094c1ddd15660580.jpg

以判断为主,不能固定返回1,不然违背题意,而且固定返回1也没有什么意义

祝同学学习愉快!

好帮手慕雪 2020-09-11 13:43:46

http://img1.sycdn.imooc.com//climg/5f5b0ced0909daa107590552.jpg

http://img1.sycdn.imooc.com//climg/5f5b0d50096e755d03880306.jpg

1)num_legal定义的是一个参数,而调用时是两个参数,所以语法不正确。可以改为

http://img1.sycdn.imooc.com//climg/5f5b0e05097b65b303760167.jpg

2)num_legal()中不能固定的返回1,应该返回一个指定区间的随机数,改为return random.randint(ls[0], ls[1])。

3)def all_num(n)中请注意:字符串才有isdigit()方法,数字是没有此方法的。   

4)建议同学写一点代码测试一点,而不是把代码全部写完才去测试。

5)另外作业没有固定的答案,只要根据要求来写,实现效果即可。慕课网希望大家培养自己的编程风格和编码习惯,鼓励学生自行思考,所以暂不提供源码。作业批复时,老师会根据你的代码情况,会给出建议代码优化方案的。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~~~~


  • 提问者 慕码人7525953 #1
    num_legal()中为什么不能固定的返回1,那不是和题目要求不同了?这里不是很理解
    2020-09-11 17:19:30
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师