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

Linux下VS Code编写Python掷骰子程序遇NameError求助

解决掷骰子程序中的NameError错误

你的代码里有两个关键问题导致了错误,逐一说明:

  • 调用实例方法的方式错误:roll()是Dice类的实例方法,必须通过你创建的实例dado来调用,直接写roll()会被解释器当成全局函数,而全局环境里并没有这个函数,所以触发NameError。正确的调用方式是dado.roll()。

  • 访问实例属性的方式错误:在roll方法里,你用Dice.sides尝试获取骰子的面数,但sides是在__init__中定义的实例属性,属于每个具体的骰子实例,不是类属性。应该用self.sides来访问当前实例的面数,否则会找不到这个属性。

修正后的完整代码:

from random import randint

class Dice:
    def __init__(self, sides):
        self.sides = sides

    def roll(self):
        play = randint(1, self.sides)
        print(play)

dado = Dice(6)
dado.roll()  # 通过实例调用方法

运行这段代码就能正常生成1到6之间的随机数,模拟掷骰子的效果了。

内容的提问来源于stack exchange,提问作者Kko_Viv

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:54:50