这个项目有几个点不懂

来源:3-2 项目作业

慕码人7525953

2020-09-11 11:50:24

1111

写回答

2回答

好帮手慕雪

2020-09-11

同学先根据  http://class.imooc.com/course/qadetail/253989  把问题修改一下,再往后写。另外同学一定要注意:一定要写一点代码测试一点,而不是把代码全部写完才去测试。否则错误太多无从下手,定位问题困难,而且还打击自信心。曾经遇到这样的学生,就是自己写出的代码是不敢测试的,因为感觉一运行就报错,一运行就报错,索性全部写完再测试,其实这样是自欺欺人的,自己写的bug早测晚测都得测,早改晚改都得改。课程中老师有时可能是一气呵成最后测试的,但那是因为老师写的不下10遍了(说10遍都是少的),闭着眼睛都不会出错,但对于初学者来说,一定要早发现问题早修改。编程与别的学科不一样,一定要多测试,要耐下心来,不能着急。祝:学习愉快


0

慕码人7525953

提问者

2020-09-11

根据提示做下来,发现很多问题,但是不知道怎么处理,分开几个小题会做,综合起来就不懂了,有点绕啊



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])

0

0 学习 · 8160 问题

查看课程