鱼C论坛

 找回密码
 立即注册
查看: 1286|回复: 2

[已解决]初学python问题

[复制链接]
发表于 2023-10-26 20:18:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#定义一个骰子类#
class Die():

#有一个属性为面数,默认为六#
    def __init__(self,sides=6):
        self.sides=sides

#定义一个方法,随机投,随机数从1至骰子面数#    
    def roll_die(self):
        from random import randint
        x=randint(1,sides)
        print(x)

a=Die()
a.roll_die()
想做一个可以更改面数的骰子,出现了问题,不知道如何解决
Traceback (most recent call last):
  File "D:/python文件/学习/9.5kh/die.py", line 15, in <module>
    a.roll_die()
  File "D:/python文件/学习/9.5kh/die.py", line 11, in roll_die
    x=randint(1,sides)
NameError: name 'sides' is not defined
这是错误
最佳答案
2023-10-26 20:18:50
在你的代码中,sides 是骰子类的属性,但在 roll_die 方法中,你需要使用 self.sides 来引用该属性。修改你的代码如下:
class Die():
    def __init__(self, sides=6):
        self.sides = sides

    def roll_die(self):
        from random import randint
        x = randint(1, self.sides)
        print(x)

a = Die()
a.roll_die()

这样修改后,问题应该就解决了。现在你可以创建一个默认面数为 6 的骰子实例,并通过调用 roll_die 方法来随机投掷骰子。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-26 20:18:50 | 显示全部楼层    本楼为最佳答案   
在你的代码中,sides 是骰子类的属性,但在 roll_die 方法中,你需要使用 self.sides 来引用该属性。修改你的代码如下:
class Die():
    def __init__(self, sides=6):
        self.sides = sides

    def roll_die(self):
        from random import randint
        x = randint(1, self.sides)
        print(x)

a = Die()
a.roll_die()

这样修改后,问题应该就解决了。现在你可以创建一个默认面数为 6 的骰子实例,并通过调用 roll_die 方法来随机投掷骰子。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-26 20:19:00 | 显示全部楼层
问题出在你在方法 roll_die 中使用了变量 sides ,但是你没有将 sides 定义为类的属性。因此,当你尝试在方法中使用 sides 时,Python无法找到该变量的定义,从而导致 NameError 错误。

要解决这个问题,你可以将 sides 作为类的属性进行定义。在 __init__ 方法中,将 sides 赋值给 self.sides 。这样,你就可以在整个类中使用 sides 属性。

下面是修改后的代码:
class Die():
    def __init__(self, sides=6):
        self.sides = sides

    def roll_die(self):
        from random import randint
        x = randint(1, self.sides)
        print(x)

a = Die()
a.roll_die()

这样,你就可以创建一个默认面数为6的骰子,并使用 roll_die 方法进行随机投掷了。如果你想创建其他面数的骰子,可以在创建对象时传入相应的参数,例如 a = Die(10) 将创建一个面数为10的骰子。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 13:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表