【发布时间】:2021-10-30 13:43:32
【问题描述】:
您好,我是 python 新手,在网上做这个练习我被卡住了。这是练习,我已经做了什么,有人可以帮助我。
定义一个包含单个占用属性的 Case 类。
此属性在实例化过程中会自动取值''。
在 Case 类中定义一个 play1 方法,如果 case 未被占用,则该方法将为占用的属性赋予值 'X'。
在 Case 类中定义一个 play2 方法,如果 case 未被占用,则该方法将值 'O' 赋予被占用的属性。
这是我的代码的第一部分:
class Case:
def __init__(self, occupe):
self.occupe = ' '
def jouer1(self):
if self.occupe == ' ':
self.occupe = 'X'
def jouer2(self):
if self.occupe == ' ':
self.occupe = 'O'
定义一个具有两个属性的地形类:网格和塔。 grid 属性是一个 Case 类型的 9 元素列表。
turn 属性是一个整数,如果轮到玩家 1 上场,则等于 1;如果轮到玩家 2 上场,则等于 2。
lap 属性将自动初始化为值 1。 在 Terrain 类中定义方法 str,这将允许您对此类的对象使用打印功能。
打印函数应该在第一行显示框 0 到 2 的内容,然后在第二行显示框 3 到 5 的内容,最后在第三行显示框 6 到 8 的内容。
这些框将由字符“|”分隔并且每一行都以匹配行尾字符的 \n 字符结尾。
在类Terrain中定义一个方法play,它的参数是一个0到8之间的整数。根据轮到的玩家,这个方法会调用对应单元格的play1或play2方法。整数传入参数。
然后需要修改 turn 属性的值,以便下一个玩家可以玩。
class Terrain():
def __init__(self, tour , grille = [0,1,2,3,4,5,6,7,8]):
self.grille = grille
self.tour = 1
def __str__(self):
for i in range(3):
return self (" | ".__str__() +str(grille[i+3]), end='')
print(" 0) 1) 2)")
for i in range(3,6):
print(" | "+str(grille[i+3]), end='')
print(" 0) 1) 2)")
for i in range(6,9):
print(" | "+str(grille[i+3]), end='')
而且我正在阻止我不明白有人可以帮助我的 str 方法。
【问题讨论】:
-
请更正代码中的缩进。一个直接的观察是你在 Terrain.__str__ 中的循环永远不会完成,因为它在第一次迭代中返回。
标签: python class attributes