Как заставить программу не использовать первый вариант

#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 что и оператор, чтобы она выполнялась после завершения цикла.