<p>一般来说,你的<code>getTribe()</code>函数应该<code>return</code>部落而不是{<cd3>}它。但是,我要做的主要事情是创建一个单独的函数来测试一组提供的坐标是否与村庄的坐标相同。假设你改变了你的班级:</p>
<pre><code>import random
class new_village():
def __init__(self):
self.name = 'Random name'
x = random.randint(1,9)
y = random.randint(1,9)
self.coordinates = [x,y]
tribe = random.randint(1,2)
if tribe == 1:
self.tribe = 'gauls'
elif tribe == 2:
self.tribe = 'teutons'
def getTribe(self): return self.tribe
def getCoords(self): return self.coordinates
def areCoordinates(self, x, y):
if [x, y] == self.coordinates: return True
else: return False
def printDetails(self):
print 'Details for the Tribe are: '
print '\t Tribe:', self.tribe
print '\t Coordinates: ', self.coordinates
</code></pre>
<p>你有很多村庄,比如:</p>
^{pr2}$
<p>然后,您可以始终得到与特定坐标相对应的村庄:</p>
<pre><code>In [14]: map(lambda v: v.printDetails() , filter(lambda v: v.getCoords() == [8,6] , vs))
Details for the Tribe are:
Tribe: teutons
Coordinates: [8, 6]
Out[14]: [None]
</code></pre>
<p>如果村庄不在:</p>
<pre><code>In [15]: map(lambda v: v.printDetails() , filter(lambda v: v.getCoords() == [2,3] , vs))
Out[15]: []
</code></pre>
<p>请注意,代码的结构方式可能有多个村庄可以在同一坐标下生成。这可以很容易地用一个谨慎的声明来处理。在</p>