【发布时间】:2018-05-31 04:18:40
【问题描述】:
除了 Star_cluster 类中的 def merge() 之外,所有代码都给出了
class Planet:
def __init__(self, a_str, a_boolean, an_int):
self.type = a_str
self.in_habitable_zone = a_boolean
self.number_of_moons = an_int
class Star:
def __init__(self, a_str, a_float, a_planet_list):
self.name = a_str
self.surface_temperature = a_float # in Kelvin
self.orbiting_planets = a_planet_list # list of Planet-objects
class Star_cluster():
def __init__(self):
self.star_list = [] # list of Star-objects
self.total_number_of_planets = 0
def add(self, star):
self.star_list.append(star)
self.total_number_of_planets += len(star.orbiting_planets)
def merge(self, a_star_cluster):
self.star_list.append(a_star_cluster)
planet1 = Planet('rocky', True, 1)
planet2 = Planet('gas giant', False, 9)
planet3 = Planet('rocky', True, 3)
star1 = Star('Alpha Centauri', 9001.0, [])
star2 = Star('Betelgeuze', 3000.0, [planet1])
star3 = Star('Tau Ceti', 7000.0, [planet2, planet3])
sc1 = Star_cluster()
sc1.add(star1)
sc2 = Star_cluster()
sc2.add(star2)
sc2.add(star3)
sc1.merge(sc2)
print "should be 3: %d" % (len(sc1.star_list))
我们唯一需要在这段代码中放入 def 合并,但我一直得到 2 而不是 3。我们明天有考试,但我们的老师没有给我们任何答案....
【问题讨论】:
-
代码太多,我们无法为您调试,尤其是当您甚至没有描述代码时。有没有调试过?
-
尽管你不应该在
merge中使用append,但我会采取措施。您似乎需要连接列表,而不是将一个附加到另一个。 -
不,我们没有,因为他们没想到会在考试中出现。我们唯一需要做的就是填写def merge(self, a_star_cluster)。我们需要的是合并 sc1 和 sc2。
-
我不确定那条评论的反应是什么。如果你说你没有调试是因为你不必为了考试而调试,那是错误的思考方式。无论如何,您都需要调试代码。这是达到目的的手段。
-
感谢您的回答。问题是我们不要调试,因为代码已经给出正确的(我希望)。所以我们只需要输入一些小代码来定义合并