Как сделать так, чтобы оператор вывода моего вывода возвращал правильную метку, а не место, где хранится эта метка? - PullRequest
0 голосов
/ 24 октября 2019

Я определяю функцию для класса, который получает свои значения из файла CSV, который я прочитал. По сути, функция находит расстояние между двумя городами на основе соответствующих значений широты и долготы в записи этого города.

class City:
    def __init__ (self, name, label, lat, lon, pop_dict):
        self.name = name
        self.label = label
        self.lat = lat
        self.lon = lon
        self.pop_dict = pop_dict

    def printDistance(self, othercity):     
        lat_self = self.lat
        lat_othercity = othercity.lat
        lon_self = self.lon
        lon_othercity = othercity.lon
        lat1 = float(lat_self)
        lat2 = float(lat_othercity)
        lon1 = float(lon_self)
        lon2 = float(lon_othercity)
        radian_lat1 = math.radians(lat1)
        radian_lat2 = math.radians(lat2)
        radian_lon1 = math.radians(lon1)
        radian_lon2 = math.radians(lon2)
        AD = (math.acos(math.sin(radian_lat1) * math.sin(radian_lat2) + math.cos(radian_lat1) * math.cos(radian_lat2) * math.cos(radian_lon1 - radian_lon2)))
        print "The distance between", self, "and", othercity, "is", int((AD * 6300)), "kilometers."

print Cities[0].printDistance(Cities[1])

Функция работает, как и предполагалось, однако я могу только ввести индексное значение местоположения города, где он хранится, а не сами названия города. Так, для приведенного выше примера оператора print я получаю: The distance between <__main__.City instance at 0x103128d40> and <__main__.City instance at 0x1031285f0> is 5783 kilometers.

Я бы предпочел, чтобы мой оператор работал так, чтобы я мог просто выполнить: print Cities[Tokyo].printDistance(Cities[Paris]) например.

1 Ответ

0 голосов
/ 24 октября 2019

Если вы измените print "The distance between", self, "and", othercity, "is", int((AD * 6300)), "kilometers." на print "The distance between", self.name, "and", othercity.name, "is", int((AD * 6300)), "kilometers." Функция печати должна показывать названия городов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...