ValueError: empty range for randrange() (0, 0, 0)

博主分享了在Linux环境下,使用Python3时遇到random.randint()报空范围错误的案例。问题源于尝试从空列表中取随机索引,通过修改数据获取逻辑确保列表非空后,解决了这一问题。参考了官方文档和相关博客。

诸神缄默不语-个人优快云博文目录

运行环境,报错信息、原因和解决方案:
Linux系统,Python3,random包。(在运行过程中使用了其他框架,与本错误无直接关系)

报错信息:

Traceback (most recent call last):
  File "my_path/myscript.py", line 302, in <module>
    i=random.randint(0,len(val_data)-1)
  File "mypath/lib/python3.8/random.py", line 248, in randint
    return self.randrange(a, b+1)
  File "mypath/lib/python3.8/random.py", line 226, in randrange
    raise ValueError("empty range for randrange() (%d, %d, %d)" % (istart, istop, width))
ValueError: empty range for randrange() (0, 0, 0)

问题所在:我发现是因为获取数据(val_data)的过程中出现了问题,导致val_data为空列表,len(val_data)-1为-1,小于0,而random.randint()方法的第二个参数必须大于或等于第1个参数。

解决方式:使randint()的第二个入参大于等于第一个入参,本例中即要求len(val_data)-1>0
我修改获取数据的代码后,val_data有了元素,len(val_data)-1大于等于0了,就可以正常运行了。

参考资料:

  1. ValueError: empty range for randrange() (1,1, 0)_醉小义的博客-优快云博客
  2. random.randint()的官方文档
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诸神缄默不语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值