#python
#python
Вопрос:
Я пытаюсь создать программу, которая извлекает информацию о погоде из ближайшего к моему местоположения. Затем я заметил, что после того, что казалось успешным, программа будет работать с первым доступным вариантом данных о погоде, который находится примерно в 6373 километрах. У кого-нибудь есть предложения? Примечание: по соображениям конфиденциальности я заменил свои координаты на x . вы можете вставить свои собственные координаты, и программа должна работать. Я тоже новичок в python, поэтому, пожалуйста, постарайтесь не усложнять свои ответы.
from requests import get
import json
from pprint import pprint
from haversine import haversine
stations = 'https://apex.oracle.com/pls/apex/raspberrypi/weatherstation/getallstations'
weather = 'https://apex.oracle.com/pls/apex/raspberrypi/weatherstation/getlatestmeasurements/'
my_lat = x
my_lon = x
all_stations = get(stations).json()['items']
def find_closest():
smallest = 20036
for station in all_stations:
station_lon = station['weather_stn_long']
station_lat = station['weather_stn_lat']
distance = haversine(my_lon, my_lat, station_lon, station_lat)
if distance < smallest:
smallest = distance
closest_station = station['weather_stn_id']
print(distance)
return closest_station
closest_stn = find_closest()
weather = weather str(closest_stn)
my_weather = get(weather).json()['items']
pprint(my_weather)
Ответ №1:
return closest_station
не должно быть в цикле. Это приводит к возврату функции на первой итерации, а не после прохождения всех станций.
Эта строка должна иметь тот же отступ, for
что и оператор, чтобы она выполнялась после завершения цикла.