请问为什么main函数实现不了

来源:3-2 项目作业

weixin_慕田峪9286359

2019-07-28 20:18:56

# "数字猜猜猜"小游戏
from datetime import datetime
import random
import sys


def guide_page(guide_word):
   """
   提示玩家进入游戏
   """
   guide_title = '{0}{1}{2}'.format('*' * 33, guide_word, '*' * 33)
   print(guide_title)


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


def num_legal(ls):
   """
   判定指定序列中的数值是否相等以及记录数字区间起始位置的值是否大于记录数字区间终止位置的值
   """
   if ls[0] == ls[1]:
       print("您输入的区间数字相同!!请重新启动程序。")
       sys.exit()
   elif ls[0] > ls[1]:
       print("您输入的数字区间大小有误,请重新启动程序.")
       sys.exit()
   else:
       return 1


def set_final_num(num1, num2):
   """
   根据参数值,产生一个位于参数值区间以内的随机数
   """
   list1 = [num1, num2]
   num_range = list(filter(all_num, list1))
   if num_legal(num_range) == 1:
       print("所产生的随机数字区间为:{0}".format(list1))
       return random.randrange(int(num1), int(num2))
   else:
       print("您输入的为非法字符,请重新启动程序。")


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


def write_record(times, value):
   """
   将玩家每一次猜测数字和本次猜测次数两项信息写入日志文件
   """
   times = 0
   times += 1
   value = input("请继续输入您猜测的数字:")
   rest = '{0}: 第{1}次您猜测的数字为:{2}'.format(datetime.now, times, value)
   file_name = 'record.txt'
   with open(file_name, 'a', encoding='utf-8') as f:
       f.write(rest)
       f.write('\n')


def main(rand1):
   """
   依据所产生的随机数字(rand1),提示玩家输入猜测数字并进行比对直到猜测到正确数字
   """
   a1 = "*" * 30
   a2 = "Lower than the answer"
   a3 = "Higer than the answer"
   temp = rand1
   count = 0
   while True:
       num = int(input("请继续输入您猜测的数字:"))
       if check_num_legal(num) is True:
           break
       else:
           count += 1
           write_record(count, temp)
           if num == rand1:
               print(a1)
               print("恭喜您,只用了{0}次就赢得了游戏".format(temp))
           elif num != rand1:
               print(a1)
               if num > rand1:
                   print(a3)
               elif num < rand1:
                   print(a2)


if __name__ == '__main__':
   guide_page("欢迎进入数字猜猜小游戏")
   i = input("数字区间起始值:")
   j = input("数字区间终止值:")
   random_num = set_final_num(i, j)
   print('随机数为:{0}'.format(random_num))
   main(random_num)

写回答

1回答

好帮手乔木

2019-07-29

同学你好:

同学的main函数的实现有一定的逻辑错误,在其他函数中也有一些错误。

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

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

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

main函数同学需要对数字和随机数在while循环中进行条件判断。可以参考上图中的写法。

同学可以继续完成自己剩下的作业。

入股欧沃解决了同学的问题,请采纳!学习愉快^_^。

0

0 学习 · 8160 问题

查看课程