【Python】遇到 “non-integer arg 1 for randrange() ” 问题的解决方法
我在写代码的时候,遇到 non-integer arg 1 for randrange()
错误,最后发现是random函数出了问题,主要是这个代码上:
sleep(random.randint(1.5,2.5))
错误原因
这个错误发生在 Python 的 random.randint()
函数中,这个函数需要返回一个介于 a 和 b 之间的随机整数(包括 a 和 b)。
而我的参数给的是浮点数,所以出现问题了。
同时,如果是用random.randrange()
函数,也是要求所有参数必须是整数的,例如:
import random# 错误示例1 - 传递浮点数
random.randrange(10.5) # 错误: 10.5是浮点数# 错误示例2 - 传递字符串
random.randrange("10") # 错误: "10"是字符串
解决方案
1. 确保参数是整数
# 正确做法 - 使用整数
random.randrange(10) # 生成0-9的随机整数# 如果参数可能是浮点数,先转换为整数
value = 10.5
random.randrange(int(value)) # 先转换为整数
2. 如果是非整数范围,可以考虑random.uniform
:
import random# 使用random.uniform()处理浮点数范围
random.uniform(1.0, 10.5) # 返回1.0到10.5之间的随机浮点数