我很遗憾地问这个问题,因为关于这个问题已经写了很多,但我在将其用于特定项目时遇到了很多困难。
目标是创建一个MarblesBoard类,它将一组数字作为输入,然后播放游戏以按顺序排列数字。
这是我的代码:
class MarblesBoard:
def _init_(self, numbers):
self.board = []
for i in numbers:
board[i] = numbers[i]
def switch():
temp = board[0]
board[0] = board[1]
board[1] = temp
def main():
board = MarblesBoard((3,4,5))
print("I'm here")
因此输入数字(作为元组),将它们放入数组中,然后像切换方法一样操作它们。
但是当我接触到我的主要方法时,我无法打印任何内容。
答案 0 :(得分:1)
1)第一个修复是_init_
函数,它具有双前导和尾随下划线
def __init__(self, numbers):
2)您正在尝试使用元组作为索引位置raise index error
将插入数字(元组)放入空列表中。
例如: -
>>> board = []
>>> numbers = (3,4,5)
>>> for i in numbers:
... board[i] = numbers[i]
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
IndexError: tuple index out of range
所以你必须将你的数字参数分配给self.board。
self.board = numbers
3)如果switch是你的实例方法,你必须将self作为第一个参数传递。
def switch(self):
temp = self.board[0]
#Your logic
所以在解决之后,这就是它看起来的样子。
class MarblesBoard:
def __init__(self, numbers):
self.board = numbers
def switch(self):
temp = self.board[0]
# your logic
def main():
board_obj = MarblesBoard((3,4,5))
print("I'm here")
print board_obj.board
main()
使用__name__ == '__main__'
代替main
函数。
if __name__ == '__main__':
board_obj = MarblesBoard((3,4,5))
print("I'm here")
print board_obj.board
答案 1 :(得分:-1)
您的代码存在很多问题。我猜这是你的第一个python类。
首先,主要应该在课外。 init有两个_。当您引用成员变量时,您必须始终使用self。 “对于我的数字”循环数字本身,而不是他们的指数。当foo是一个空数组时,你不能只在python中指定foo [i] = bar(我想你可以用其他语言)。在类上创建成员方法时,它们必须始终将self作为其第一个参数。
class MarblesBoard:
def __init__(self, numbers):
self.board = []
for i in numbers:
self.board.append(i)
def switch(self):
# Fixing this left as an exercise for the OP
if __name__=="__main__":
board = MarblesBoard((3,4,5))
print("I'm here")