道路オブジェクトのリストから項目が削除されないのはなぜですか?
関連情報
Road オブジェクトは (self、city1、city2、length) を取り、City オブジェクトは (self、name、population) を取ります。
これらのオブジェクトを変更できるように、リスト _cities および _roads に保存しています。
この定義は、都市に接続されているすべての道路を削除してから、都市を削除することになっています。
ただし、私のコードは道路を削除したくないため (そしてエラーは発生しません)、ロジックに欠陥があるに違いありません。
手伝ってくれますか?
class Network:
def __init__(self):
self._cities = [] # list of City objects in this network
self._roads = [] # list of Road objects in this network
def hasCity(self, name):
for x in self._cities:
if x.name == name:
return True
return False
def hasRoad(self, road):
for x in self._roads:
if x.city1 == road[0] and x.city2 == road[1]:
return True
elif x.city1 == road[1] and x.city2 == road[0]:
return True
else:
return False
def addCity(self, name, pop):
if self.hasCity(name) == True:
return False
else:
self._cities.append(City(name, pop))
return True
def addRoad(self, road, length):
if self.hasRoad(road) == True:
return False
else:
self._roads.append(Road(road[0], road[1], length))
return True
def delRoad(self, road):
if self.hasRoad(road) == False:
return False
else:
for x in self._roads:
if x.city1 == road[0] and x.city2 == road[1]:
self._roads.remove(x)
return True
elif x.city1 == road[1] and x.city2 == road[0]:
self._roads.remove(x)
return True
else:
return False
def delCity(self, city):
if self.hasCity(city) == False:
return False
else:
for x in self._cities:
if x.name == city:
for j in self._roads:
if j.city1 == x.name:
self.delRoad((j.city1, j.city2))
self.delRoad((j.city2, j.city1))
elif j.city2 == x.name:
self.delRoad((j.city1, j.city2))
self.delRoad((j.city2, j.city1))
self._cities.remove(x)
return True