ValueError: empty range for randrange() (660,601, -59)中文解释
代码运行出错,报错信息如下:
Traceback (most recent call last):
File "D:\Python\pythonProject1\learning.py", line 34, in <module>
pp_TH = {(k1,t): random.randint(p_min_TH[t],p_max_TH[k1]) for k1 in set_k1 for t in set_t}
File "D:\Python\pythonProject1\learning.py", line 34, in <dictcomp>
pp_TH = {(k1,t): random.randint(p_min_TH[t],p_max_TH[k1]) for k1 in set_k1 for t in set_t}
File "D:\Python\anaconda\envs\Python37\lib\random.py", line 222, in randint
return self.randrange(a, b+1)
File "D:\Python\anaconda\envs\Python37\lib\random.py", line 200, in randrange
raise ValueError("empty range for randrange() (%d,%d, %d)" % (istart, istop, width))
ValueError: empty range for randrange() (660,601, -59)
这是一个 Python 运行时错误,说明程序在执行过程中发生了异常情况,导致程序无法继续运行。具体错误原因是:
在程序第 34 行处,使用了 Python 的字典推导式来生成一个字典 pp_TH。在字典推导式中,使用了 random 模块的 randint 函数来生成随机数,但是 randint 函数的参数范围不正确,导致无法生成随机数,抛出了 ValueError 异常。
具体来说,randint 函数的参数应该是一个区间的左右端点,左端点 p_min_TH[t] 应该小于等于右端点 p_max_TH[k1],但是在此处,左端点为 660,右端点为 601,明显左端点大于右端点,所以出现了 "empty range" 的错误。
原文地址: https://www.cveoy.top/t/topic/egx 著作权归作者所有。请勿转载和采集!