老师请教一下 main函数这里实在不知道怎么写了

来源:3-2 项目作业

weixin_慕工程2106797

2019-09-09 18:28:50

import datetime
import sys
import random


#   定义游戏进入提示函数guide_page(guide_word)
def guide_page(guide_word):
   print('{0}{1}{0}'.format('*' * 20, guide_word))

#   定义数字类型判断函数all_num(n)
def all_num(n):
   n_isdigit = n.isdigit()
   return n_isdigit

#   定义数值合法性判定函数num_legal(ls)
def num_legal(ls):
  """若两者相等,则退出程序,并提示玩家重新启动程序;
  若表示数字区间起始位置的值大于数字区间终止位置的值,则退出程序,并提示玩家重新启动程序;
  反之,则返回值为1"""
  if ls[0] == ls[1]:
      print('重新启动程序')
      sys.exit()
  elif ls[0] > ls[1]:
      print('重新启动程序')
      sys.exit()
  else:
      return 1

#   定义产生指定区间随机数函数set_final_num(num1,num2)
def set_final_num(num1, num2):
   a = [num1, num2]
   isnum = filter(all_num, a)
   if len(list(isnum)) == 2:
       if num_legal(a) == 1:
           print('随机数区间{}'.format(a))
           s = random.randint(int(num1), int(num2))
           return s
       else:
           print('输入的为非数字字符,请重新启动')
           sys.exit()

#   定义核查数值是否属于指定区间函数check_num_legal(num)
def check_num_legal(num):
  """
  依据输入的数字区间起始值和终止值,利用条件语句判断输入数值是否在指定区间,
  若不在该区间内,则提示玩家所输入的数字未在指定区间,若输入非数字字符则提示
  玩家重新输入
  """
  if num < int(i) or num > int(j):
      print('输入的数字未在指定区间')

#   定义日志写入函数write_record(times,value)
def write_record(times, value):
   with open('record.txt' , 'w+',encoding='utf-8') as f:
       f.write('{}:第{}次猜测的数字为:{}'.format(datetime.datetime.now(), times, value))


#   定义main(rand1)函数(依据所产生的随机数字(rand1),提示玩家输入猜测数字并进行比对直到猜测到正确数字)
def main(rand1):
   temp = 0
   while True:
       output = int(input('请输入所猜测的数字:'))
       if check_num_legal(output) == True:
           print('输入的数字不在指定的区间内')
           continue
       write_record(temp, output)
       temp += 1
       if output == rand1:
           print('恭喜你只用{}次赢得游戏'.format(temp))
       elif output < rand1

#   控制程序逻辑执行流程(if __name__ == '__main__':):
if __name__ == '__main__':
  #   调用guide_page(  )输出效果图所示的标题信息
   guide_page('欢迎来到游戏猜猜猜')
  #   设置两个变量(i,j)分别接收用户输入数字区间的起始值和终止值
  i = input('请输入起始值:')
  j = input('请输入终止值:')
  #   调用set_final_num( )函数得到随机数,赋值给变量r
  r = set_final_num(i, j)
  #   调用main( )执行程序流程
  main(rand1)

写回答

1回答

好帮手乔木

2019-09-09

同学你好:

注意条件判断的缩进,非数字字符时,结束程序。


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

符合条件判断,做一个返回值,方便下边调用该方法进行条件判断使用

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

写入记录时的选项是a或者w,a是追加写入,在这个场景较为适合。可以在记录一条数据之后加一个换行符\n。

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

由于同学的计数是从0开始的,所以文件记录时,temp应先加1.

猜测的数字等于生成的随机数时,需要跳出循环

条件判断猜测数字的值如标注部分。

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

main()函数接收的参数是r不是rand。rand变量没有定义。

注意缩进。

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

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

0
heixin_慕工程2106797
h 谢谢老师,知道了
h019-09-09
共1条回复

0 学习 · 8160 问题

查看课程