不太理解:自定义产生指定区间随机数函数set_final_num(num1,num2):

不太理解:自定义产生指定区间随机数函数set_final_num(num1,num2):

正在回答

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

1回答

同学,你好。set_final_num(num1,num2):根据参数值,产生一个位于参数值区间以内的随机数。

思路分析如下:

1)设置num1和num2两个形参,用于接收起始值和终止值,并保存到列表中

2)利用内置函数filter()及all_num()过滤以确保输入的起始值和终止值全部为数字

3)依据(2)中过滤后的返回值进行判断,若全部为数字,则调用num_legal(ls)函数,判断输入的起始值和终止值是否相等及两值之间的大小,若合法则根据random模块,返回产生区间内的随机数;反之则提示玩家所输入的为非数字字符,请重新启动

参考代码:

def set_final_num(num1, num2):
    # 设置num1和num2两个形参,用于接收起始值和终止值,并保存到列表中
    ls = [num1, num2]
    # 过滤以确保输入的起始值和终止值全部为数字
    num_range = list(filter(all_num, ls))
    # 若num_range列表的长度为2,则表示起始值和终止值都为数字
    if len(num_range) == 2:
        # 判断起始值和终止值的合法性
        l = num_legal(num_range)
        # 若l存在,表示起始值和终止值没问题,使用random生成随机数
        if l:
            # 提示所输入的数字以及游戏区间
            print('所产生的随机数字区间为:{0}'.format(num_range))
        # 返回要游戏区间以产生该区间的随机数字
        return random.randrange(int(num1), int(num2))
    else:
        print('您所输入的为非数字字符,请重新启动!')
        sys.exit()

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~

  • 多敲多学多想 提问者 #1
    判断起始值和终止值为数字也可以调用前面的all_num()放在filter函数里用吗,就是不用if len(num_range) == 2:这句
    2019-11-25 14:26:40
  • 好帮手慕美 回复 提问者 多敲多学多想 #2
    同学,你好。all_num()函数就是判断指定的值是否为数字, filter()函数会将结果为True的元素放到列表num_range中,若num_range的长度为2,则表示起始值和终止值都是数字,若不为2则表示两者中任意一个不是数字。祝学习愉快~~~~
    2019-11-25 14:50:46
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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