You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义骰子程序报错‘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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:34:59