Python使用randint()函数设置起始值为1000报错问题咨询
错误产生原因
- Python 内置
random.randint(start, end)函数要求输入的两个参数必须满足start ≤ end,如果起始值大于结束值,会直接抛出ValueError异常。 - 你代码中的结束值
y由输入字符串的长度决定,计算公式化简后为y = 3 * len(输入字符串) + 144,只有当输入的字符串长度≥286时,y才会≥1000。正常输入下y远小于你设置的起始值1000,自然触发参数不合法的错误。 - 额外注意:你代码中用到的
tm(对应time模块)、rd(对应random模块)、clear()、clean()都需要提前导入或定义,否则也会触发名称错误。
可行解决方案
可根据你的需求选择任一方案修复:
- 动态适配randint的参数范围,不管y值大小都不会触发参数错误:
# 自动取两个值的最小值作为起始,最大值作为结束 chez = rd.randint(min(1000, y), max(1000, y))
- 增加输入校验,要求用户输入足够长的内容,保证y≥1000:
while True: a = input("Type a sentence: ") y = int(len(a)*3 + 150 - 12/2) if y >= 1000: break print("输入内容过短,请输入至少286个字符的内容")
- 调整y的计算公式,抬高最低值保证y始终≥1000,比如将公式中的常数项150替换为1006,哪怕输入空字符串y也能达到1000。
内容的提问来源于stack exchange,提问作者TheWalrus
相关产品推荐
相关产品推荐

