鱼C论坛

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

[已解决]初学python问题

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

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

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

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

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

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

  11. a=Die()
  12. a.roll_die()
复制代码
想做一个可以更改面数的骰子,出现了问题,不知道如何解决

  1. Traceback (most recent call last):
  2.   File "D:/python文件/学习/9.5kh/die.py", line 15, in <module>
  3.     a.roll_die()
  4.   File "D:/python文件/学习/9.5kh/die.py", line 11, in roll_die
  5.     x=randint(1,sides)
  6. NameError: name 'sides' is not defined
复制代码
这是错误
最佳答案
2023-10-26 20:18:50
在你的代码中,sides 是骰子类的属性,但在 roll_die 方法中,你需要使用 self.sides 来引用该属性。修改你的代码如下:

  1. class Die():
  2.     def __init__(self, sides=6):
  3.         self.sides = sides

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

  8. a = Die()
  9. a.roll_die()
复制代码


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

使用道具 举报

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

  1. class Die():
  2.     def __init__(self, sides=6):
  3.         self.sides = sides

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

  8. a = Die()
  9. a.roll_die()
复制代码


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

使用道具 举报

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

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

下面是修改后的代码:

  1. class Die():
  2.     def __init__(self, sides=6):
  3.         self.sides = sides

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

  8. a = Die()
  9. a.roll_die()
复制代码


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-24 18:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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