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
相关产品推荐
相关产品推荐

