Глобальная переменная не определенаPython

Программы на Python
Ответить
Anonymous
 Глобальная переменная не определена

Сообщение Anonymous »

Я не могу создать новый столбец. Я работаю над программой поиска школ, которая рассчитывает ближайшие школы на основе широты и долготы между всеми школами в моей стране и местоположения пользователя. Я использовал библиотеку Geopy для географических расчетов и pyproj для преобразования между восточным/северным направлением и широтой/долготой. Библиотека pandas используется для создания столбцов и строк и доступа к ним.
Вот проблема: переменная Distance, которая должна содержать расстояния в милях, была определена внутри функции как пустой список. Однако терминал сообщает, что он не определен, даже когда я использую ключевое слово global. Мне посоветовали использовать отладчик, но он показал только то, что Distance обновляется внутри функции, изменения не сохраняются вне ее.
Я также пробовал определить Distance как пустой список вне функции, но когда он изменяется внутри функции, он все равно остается пустым снаружи.

import geopy # used to get location
from geopy.geocoders import Nominatim
from geopy import distance
import pandas as pd
from pyproj import Transformer

geolocator = Nominatim(user_agent="Everywhere") # name of app
user_input = input("Enter number and name of street/road ")
location = geolocator.geocode(user_input)
your_location = location.latitude,location.longitude #expects a tuple being printed

df = pd.read_csv('longitude_and_latitude.csv', encoding= 'latin1') # encoding makes file readable
t = Transformer.from_crs(crs_from="27700",crs_to="4326", always_xy=True) # instance of transformer class
df['longitude'], df['latitude'] = t.transform((df['Easting'].values), (df['Northing'].values)) # new

def distance_apart(df,your_location):
school_location = []
global Distance
Distance = [ ]
for lat,lon in zip(df['latitude'],df['longitude']): # go through two columns at once
school_location.append([lat,lon])
for schools in school_location:
distance_apart = (distance.distance(your_location ,schools)).miles
Distance.append(distance_apart)

print(Distance)
if __name__ == '__main__':
distance_apart(df,your_location)



Подробнее здесь: https://stackoverflow.com/questions/798 ... -undefined
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»