class Drunk:
def __init__(self, name):
"""The name is assumed to be a string representing the drunk"""
self.name = name
def __str__(self):
if self.name != None:
return 'Anonymous'
else:
return self.name
# We will now define "a special case" of a drunk [A Subclass]
import random
class UsualDrunk3D(Drunk):
def takeStep(self):
# choose one of up/down/left/right/forward/backward with equal probability
steps = [(1,0,0), (0,-1,0), (-1,0,0), (0,1,0), (0,0,-1), (0,0,1)]
return random.choice(steps)
class UsualDrunk4D(Drunk):
def takeStep(self):
# choose one of the eight possible moves with equal probability
steps = [(1,0,0,0), (0,-1,0,0), (-1,0,0,0), (0,1,0,0), (0,0,-1,0), (0,0,1,0), (0,0,0,1), (0,0,0,-1)]
return random.choice(steps)
field = Field()
drunk = UsualDrunk3D('XYZW')
field.addDrunk(drunk, Location(0,0,0,0))
field.moveDrunk(drunk)
print(field.getLoc(drunk))
嗨,我正在做一个醉酒行走模拟,我已经为字段和位置定义了类,但是我在醉酒类上遇到了问题,我能减少这部分代码的错误吗?你知道吗
出现错误:
ValueError Traceback (most recent call last)
<ipython-input-17-9bc178e381fe> in <module>()
27 drunk = UsualDrunk3D('XYZW')
28 field.addDrunk(drunk, Location(0,0,0,0))
---> 29 field.moveDrunk(drunk)
30 print(field.getLoc(drunk))
<ipython-input-12-2846f0083c6c> in moveDrunk(self, drunk)
11 raise ValueError("Drunk not in field")
12 else:
---> 13 dx, dy, dz, dw = drunk.takeStep()
14 self.drunks[drunk] = self.drunks[drunk].move(dx,dy,dz,dw)
15 def getLoc(self, drunk):
ValueError: not enough values to unpack (expected 4, got 3)
UsualDrunk3D.takeStep
返回一个包含3个值的元组。你知道吗UsualDrunk4D.takeStep
返回具有4个值的元组。你知道吗您没有显示的代码
moveDrunk
期望takeStep
返回一个包含4个值的元组:您可以对其中一个维度进行
UsualDrunk3D.takeStep
返回0
,例如dw
:我假设从您不完整的代码中,您正在将一个三元组(从3d)解耦合到dx、dy、dz、dw(即4),所以这是一个明显的错误。你知道吗
相关问题 更多 >
编程相关推荐