自定义骰子程序报错‘non-integer stop for randrange()’求助
解决randrange()报错"non-integer stop for randrange()"的问题
嘿,这个问题其实很常见——你踩了Python输入类型的小坑啦!
问题根源
input()函数获取到的用户输入默认是字符串类型,而random.randrange()要求传入的参数必须是整数,直接把sides传进去自然会触发类型错误。
修复方案
首先要把输入的字符串转换成整数,用int()函数就行。另外还要注意一个细节:randrange(a, b)是左闭右开区间,也就是只会生成a到b-1的数,如果你想让骰子包含sides这个最大值,得调整一下范围:
方法1:用randrange调整范围
import random sides = int(input("Sides: ")) custom = random.randrange(1, sides + 1) # +1让区间包含sides
方法2:用randint更直观
如果你觉得记区间规则麻烦,random.randint(a, b)是闭区间的,直接传1和sides就可以生成1到sides的随机数:
import random sides = int(input("Sides: ")) custom = random.randint(1, sides)
进阶:增加异常处理(可选)
如果担心用户输入非整数内容导致崩溃,可以加个简单的异常处理,让程序更健壮:
import random try: sides = int(input("Sides: ")) if sides < 1: print("骰子面数得大于等于1哦!") else: result = random.randint(1, sides) print(f"掷出的点数是: {result}") except ValueError: print("请输入有效的整数呀!")
内容的提问来源于stack exchange,提问作者Mr Pizza
相关产品推荐
相关产品推荐

