#python #api #tkinter #location #weather
#python #API #tkinter #Расположение #Погода
Вопрос:
def location():
res = requests.get('https://ipinfo.io/')
data = res.json()
stad = data['city']
location = data['loc'].split('.')
latitude = location[0]
longitude = location[1]
return stad
def get_weather():
location(stad)
weather_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
url = 'https://api.openweathermap.org/data/2.5/weather'
# q=Amsterdamamp;appid=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
city = location(stad)
params = {'q': city, 'APPID': weather_key, 'units': 'metric'}
response = requests.get(url, params= params)
print(f'Het weer vandaag in Utrecht is:')
print(response.json())
Уважаемые пользователи stackoverflow,
Я пытаюсь получить свой from city = location(stad) из определения местоположения () ((stad означает город на голландском языке))
но это не работает python говорит, что местоположение (stad) не определено что я могу сделать, чтобы исправить эту проблему?
Ответ №1:
Вы неправильно обработали ответ функции. Вместо того, чтобы присваивать ответ переменной, вы передали параметр (неопределенную переменную) функции «местоположение».
Вместо location(stad)
этого вы должны использовать stad = location()
.
Кроме того, в вашем коде я видел несколько вещей, которые могут быть ненужными —
в определении «местоположения», поскольку вы возвращаете только город (stad), вам не нужно обрабатывать долготу и широту. Кроме того, поскольку долгота / широта могут быть десятичными, вы можете не получить точных значений, если разделите их с помощью «period» ( .
).
Ответ №2:
location(stad)
не определено, поскольку «местоположение» — это функция, которая не получает параметры.
Вы должны написать: city = location()
, тогда переменная «stad», которая вычисляется в функции «location», будет присвоена вашей переменной «city». Это понятно?
Кроме того, строка :
location(stad)
(в начале функции get_weather()
)
выглядит как ненужная строка. зачем вызывать функцию, если вы не используете то, что было возвращено?