Python中基于randomint的骰子if语句报错:无法比较函数与整数,求解决
问题解决:骰子掷数的if-then语句错误修复
错误原因分析
你碰到的ValueError: don't know how to compare 'function' and 'int',核心问题是你把函数本身和整数做了比较,而不是函数的返回值。比如你定义了roll_dice作为生成随机数的函数,但没加括号调用它(roll_dice()),或者根本没正确生成随机数结果就直接用变量名去比较了。
另外你的else块逻辑也有问题:
roll_dice > 10这行只是做了个比较,没有任何判断或赋值作用,完全无效;- 直接给
roll_dice = 10会覆盖之前的掷骰结果,导致等于10的情况逻辑错误。
修正后的代码示例
import random # 生成1到20之间的随机骰子点数(可根据需求修改范围,比如6面骰子就改成(1,6)) roll_dice = random.randint(1, 20) if roll_dice < 10: print("dang, you got a low roll, try again") elif roll_dice > 10: print("nice! you got a high roll") else: # 剩下的情况就是等于10 print("10!")
关键修改点说明
- 导入random模块:必须先导入才能用
randint函数生成随机数; - 正确生成掷骰结果:用
random.randint(最小值, 最大值)生成具体的整数点数,赋值给roll_dice变量; - 修正条件分支:用
elif处理大于10的情况,else自然对应等于10的情况,逻辑清晰且覆盖所有可能。
内容的提问来源于stack exchange,提问作者user20361528
相关产品推荐
相关产品推荐

