为啥运行出错啊?

为啥运行出错啊?

import random
import sys
from datetime import datetime
from idlelib.iomenu import encoding


def guide_page(guide_word):
   '{1}{0}{1}'.format(guide_word,'*'*10)
   return
def all_num(n):
  return n.isdigit()
def num_legal(ls):              #判定合法性
   ls_int = list(map(int,ls))
   if  ls_int[0] == ls_int[1]:
       return False
       print("你输入的区间数字相同!!请重新启动程序。")
       sys.exit()
   elif ls_int[0] > ls_int[1]:
       return 0
       print("您输入的数字区间大小有误!!请重新启动程序。")
       sys.exit()
   else :
       return  1
def set_final_num(i,j):      #获得指定区间
   final_ls = [i,j]
   result = list(filter(all_num,final_ls))
   while len(result) == 2 and num_legal(result) :
       return random.randint(i,j+1)
   else :
       print("您输入的的为非数字字符,请重新启动。")
       sys.exit()
def check_num_legal(num) :      #是否位于指定区间
   if num>i and num< j:
       return
   else :
       print("您所输入的数字未在指定区间")
def write_record(times,value) :     #记录
   now_time = datetime.now()
   with ("record.txt",'w',) as f:
       f.write("{0}:您第{1}次所猜的数字为{2}\n".format(now_time,times,value))
def main(rand1):                #主函数
   temp = set_final_num(i,j)
   number = 0
   while True :
       guess_number = int(input("请输入您所猜的整数"))
       if guess_number in rand1 :
           number += 1
           write_record(number,guess_number)
           if guess_number == temp :
               print("恭喜您!只用了{}次就赢得了游戏".format(number))
               break
           elif guess_number < temp :
               print("Lower than answer")
               break
           else :
               print("Higher than the answer")
               break
       else :
           print("对不起,你本次输入的数字未在指定区间")
           continue


if __name__ =='__main__':
   guide_word = "欢迎进入数字猜猜猜小游戏"
   guide_page(guide_word)
   i = input("数字区间的起始值:")
   j = input("数字区间的终止值:")
   rand_num = set_final_num(i,j)
   print("所产生的随机数字区间为",[i,j])
   main(rand_num)

正在回答

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

3回答

同学你好:

1.去掉encoding包

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

2.少了open

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

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


提问者 慕先生2341358 2020-03-30 17:43:06

import random
import sys
from datetime import datetime
from idlelib.iomenu import encoding


def guide_page(guide_word):
   '{1}{0}{1}'.format(guide_word,'*'*10)
   return
def all_num(n):
  return n.isdigit()
def num_legal(ls):              #判定合法性
   ls_int = list(map(int,ls))
   if  ls_int[0] == ls_int[1]:
       return False
       print("你输入的区间数字相同!!请重新启动程序。")
       sys.exit()
   elif ls_int[0] > ls_int[1]:
       return 0
       print("您输入的数字区间大小有误!!请重新启动程序。")
       sys.exit()
   else :
       return  1
def set_final_num(i,j):      #获得指定区间
   final_ls = [i,j]
   result = list(filter(all_num,final_ls))
   while len(result) == 2 and num_legal(result) :
       return random.randint(int(i),int(j))
   else :
       print("您输入的的为非数字字符,请重新启动。")
       sys.exit()
def check_num_legal(num) :      #是否位于指定区间
   if num>i and num< j:
       return
   else :
       print("您所输入的数字未在指定区间")
def write_record(times,value) :     #记录
   now_time = datetime.now()
   with ("record.txt",'a+',encoding='utf-8') as f:
       f.write("{0}:您第{1}次所猜的数字为{2}\n".format(now_time,times,value))
def main(rand1):                #主函数
   temp = rand1
   number = 0
   while True :
       guess_number = int(input("请输入您所猜的整数"))
       if guess_number >= int(i) and guess_number <= int(j) :
           number += 1
           write_record(number,guess_number)
           if guess_number == temp :
               print("恭喜您!只用了{}次就赢得了游戏".format(number))
               break
           elif guess_number < temp :
               print("Lower than answer")
               break
           else :
               print("Higher than the answer")
               break
       else :
           print("对不起,你本次输入的数字未在指定区间")
           continue


if __name__ =='__main__':
   guide_word = "欢迎进入数字猜猜猜小游戏"
   guide_page(guide_word)
   i = input("数字区间的起始值:")
   j = input("数字区间的终止值:")
   rand_num = set_final_num(i,j)
   print("所产生的随机数字区间为",[i,j])
   main(rand_num)

好帮手慕觉浅 2020-03-30 16:58:39

同学你好:在set_final_num()函数中的return语句中random.randint()方法的两个参数应该是整型,你传入了字符串,所以报错了。只需用int()转换成整型即可,如下图:

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

如果这里有很多不清楚怎么写建议多看看课程回顾一下,有不会的可以在问答区提问。

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

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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