难 好多知识点都不懂 不懂的问题后面再来问 先帮测试一下哪里出错了

难 好多知识点都不懂 不懂的问题后面再来问 先帮测试一下哪里出错了

import sys
from datetime import datetime
from random import random


def guide_page(guide_word):

   print("{0}{1}{2}".format('*'* 15, guide_word, '*'* 15))


def all_num(n):
   # 运用isdigit()函数判断输入的是否为数字并返回结果
   return n.isdigit()


def num_legal(ls):
   # 取出序列值比较
   # 若两者相等
   ls_int =list(map(int,ls))
   if int(int[0]) == int(int[1]):
       # 提示玩家重新启动程序
       # 退出程序
       sys.exit()
   # 数字区间起始值大于终止值
   elif int(int[0]) > int(int[1]):
       # 提示玩家重新启动程序
       print("你输入的数字期间大小有误!!请重新启动程序:")
       sys.exit()
   # 反之 则返回值为1
   else:
       return 1


def set_final_num(num1, num2): # 设置两个参数用于接收用户所输入区间的起始值和终止值
   ls = [num1, num2]       # 其保存到列表里
   ls = list(filter(all_num, ls))  # 利用内置函数filter()及思路分析2中的all_num(n)过滤以确保输入值全部为数字
   if num_legal(ls) == 2:  # 若全部为数字
       if num_legal(ls) == 1: # 调有自定义等值判断函数,判断输入值是否相等
           return random.randint(int(num1), int(num2))  # 运用random模块 返回产生区间的随机数
   # 反之则提示玩家输入的为非数字字符,请重新启动
   else:
       print("你输入的为非数字字符,请重新启动!")
       sys.exit()


def check_num_legal(num):
   # 利用条件语句判读输入数值是否在指定的区间内
   if num < int(i) or num > int(j):
       print("对不起你输入的数字未在指定的区间内:")
       return True
   else:
       return False

def wiite_record(times, value): # 设置参数接受玩家猜测的次数(times)和本次猜测的次数的具体数字(value)
   # 使用with语法操作日志文件 将获取到的参数和时间以追加方式写入日志文件
   f.write("{d}:第{t}次你猜测的数字为:{v}\n".format(d=datetime.datetime.now(), t=times, v=value))


def main(rand1):
   temp = rand1 # 设置变量temp接收已产生的随机数
   times = 0  # 记录猜测数字的次数
   while True: # 设置无限循环
       num = int(input("请输入你要猜测个数字:"))  # 提示用户输入所猜测数字,并转换为int类型
       print('**********')
       if check_num_legal(num): # if判断核查数值函数,如果为真跳过本次循环
           continue
       # 使用if语句判断用户猜测的数字,相等,大于,小于的情况
       if num == temp:
           times += 1
           wiite_record(times, num) # 测的数字调有日志写入函数,传入猜测的次数和用户猜测的数字
           print('恭喜你!只用了{}次就赢得了游戏'.format(times))
           break
       elif num > temp:
           times += 1
           wiite_record(times, num)  # 调有日志写入函数,传入猜测的次数和用户猜测的数字
           print('Higher than the answer')
       else:
           times += 1
           wiite_record(times, num)  # 调有日志写入函数,传入猜测的次数和用户猜测的数字
           print('Higher than the answer')


if __name__ == "__main__":
   # 调用guide_page()输出如图效果图所示的标题信息
   guide_page('欢迎进入数字猜猜小游戏')
   # 设置两个变量(i,j)分别接受用户输入数字区间的起始值和终止值
   i = input('数字区间的起始值:')
   j = input('数字区间的终止值:')
   #  调用set_final_num()函数得到随机数
   rand1 = set_final_num(num1=i, num2=j)
   # 调用main()函数执行程序流程
   main(rand1)

正在回答

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

2回答

同学,你好。上面的截图是根据同学提供的代码改的,同学只需要按照上面的截图更改即可,如果需要代码,如下:

import sys
from datetime import datetime
# from random import random
import random

def guide_page(guide_word):
    print("{0}{1}{2}".format('*'* 15, guide_word, '*'* 15))

def all_num(n):
    # 运用isdigit()函数判断输入的是否为数字并返回结果
    return n.isdigit()

def num_legal(ls):
    # 取出序列值比较
    # 若两者相等
    ls_int =list(map(int,ls))
    # if int(int[0]) == int(int[1]):
    if int(ls_int[0]) == int(ls_int[1]):
        # 提示玩家重新启动程序
        print("你输入的数字期间大小相等!!请重新启动程序:")
        # 退出程序
        sys.exit()
    # 数字区间起始值大于终止值
    # elif int(int[0]) > int(int[1]):
    elif int(ls_int[0]) > int(ls_int[1]):
        # 提示玩家重新启动程序
        print("你输入的数字期间大小有误!!请重新启动程序:")
        sys.exit()
    # 反之 则返回值为1
    else:
        return 1

def set_final_num(num1, num2): # 设置两个参数用于接收用户所输入区间的起始值和终止值
    ls = [num1, num2]       # 其保存到列表里
    ls = list(filter(all_num, ls))  # 利用内置函数filter()及思路分析2中的all_num(n)过滤以确保输入值全部为数字
    # if num_legal(ls) == 2:  # 若全部为数字
    if len(ls) == 2:  # 若全部为数字
        if num_legal(ls) == 1: # 调有自定义等值判断函数,判断输入值是否相等
            # return random.randint(int(num1), int(num2))  # 运用random模块 返回产生区间的随机数
            return random.randrange(int(num1), int(num2))  # 运用random模块 返回产生区间的随机数
    # 反之则提示玩家输入的为非数字字符,请重新启动
    else:
        print("你输入的为非数字字符,请重新启动!")
        sys.exit()

def check_num_legal(num):
    # 利用条件语句判读输入数值是否在指定的区间内
    if num < int(i) or num > int(j):
        print("对不起你输入的数字未在指定的区间内:")
        return True
    else:
        return False

def wiite_record(times, value): # 设置参数接受玩家猜测的次数(times)和本次猜测的次数的具体数字(value)
    # 使用with语法操作日志文件 将获取到的参数和时间以追加方式写入日志文件
    with open('record.txt', 'a+', encoding='UTF-8') as f:
        # f.write("{d}:第{t}次你猜测的数字为:{v}\n".format(d=datetime.datetime.now(), t=times, v=value))
        f.write("{d}:第{t}次你猜测的数字为:{v}\n".format(d=datetime.now(), t=times, v=value))

def main(rand1):
    temp = rand1 # 设置变量temp接收已产生的随机数
    times = 0  # 记录猜测数字的次数
    while True: # 设置无限循环
        num = int(input("请输入你要猜测个数字:"))  # 提示用户输入所猜测数字,并转换为int类型
        print('**********')
        if check_num_legal(num): # if判断核查数值函数,如果为真跳过本次循环
            continue
        # 使用if语句判断用户猜测的数字,相等,大于,小于的情况
        if num == temp:
            times += 1
            wiite_record(times, num) # 测的数字调有日志写入函数,传入猜测的次数和用户猜测的数字
            print('恭喜你!只用了{}次就赢得了游戏'.format(times))
            break
        elif num > temp:
            times += 1
            wiite_record(times, num)  # 调有日志写入函数,传入猜测的次数和用户猜测的数字
            print('Higher than the answer')
        else:
            times += 1
            wiite_record(times, num)  # 调有日志写入函数,传入猜测的次数和用户猜测的数字
            # print('Higher than the answer')
            print('Lower than the answer')

if __name__ == "__main__":
    # 调用guide_page()输出如图效果图所示的标题信息
    guide_page('欢迎进入数字猜猜小游戏')
    # 设置两个变量(i,j)分别接受用户输入数字区间的起始值和终止值
    i = input('数字区间的起始值:')
    j = input('数字区间的终止值:')
    #  调用set_final_num()函数得到随机数
    rand1 = set_final_num(num1=i, num2=j)
    # 调用main()函数执行程序流程
    main(rand1)

同学可参考此代码,在理解的基础上做出进一步的优化,争取自己尝试着修改,对同学编程的能力提高才会有帮助。

祝学习愉快~


好帮手慕笑蓉 2020-07-05 17:39:46

同学,你好。代码可进行如下更改:

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

http://img1.sycdn.imooc.com//climg/5f019f1d09f9037e09680284.jpghttp://img1.sycdn.imooc.com//climg/5f019f9b09039e1113460194.jpg

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

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

  • 提问者 慕哥1102496 #1
    老师给我份完整的代码吧 我写不出来 我自己分析 太难了 感觉 之前所有的题都没有这道题难 这道题涉及到好多知识点 出现错误代码写到几十行几百行我都不知道从哪里调试
    2020-07-05 18:21:15
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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