#python #api #input #openweathermap
Вопрос:
Я использую api openweather, чтобы просто получать текущую погоду. Я могу заставить его отображать данные о погоде, используя этот код. (отформатирован код api)
import requests
def current_weather():
city_name = ('Houston')
api_key = ('My api code')
url = ('http://api.openweathermap.org/data/2.5/weather?q={}amp;appid={}').format(city_name, api_key)
info = requests.get(url).json()
print(info);
current_weather()
Результат:
{
'coord': {
'lon': -95.3633,
'lat': 29.7633
},
'weather': [
{
'id': 800,
'main': 'Clear',
'description': 'clear sky',
'icon': '01d'
}
],
'base': 'stations',
'main': {
'temp': 295.42,
'feels_like': 294.72,
'temp_min': 294.14,
'temp_max': 297.09,
'pressure': 1024,
'humidity': 39
},
'visibility': 10000,
'wind': {
'speed': 2.24,
'deg': 66,
'gust': 3.58
},
'clouds': {
'all': 1
},
'dt': 1634495143,
'sys': {
'type': 2,
'id': 2006306,
'country': 'US',
'sunrise': 1634473467,
'sunset': 1634514521
},
'timezone': -18000,
'id': 4699066,
'name': 'Houston',
'cod': 200
}
[Finished in 287ms]
Но затем для названия города я пытаюсь ввести его во ввод, и он просто спрашивает меня, в каком городе я нахожусь, и останавливает программу.
def current_weather():
city_name = input('What city are you in?: ')
api_key = ('My api code')
url = ('http://api.openweathermap.org/data/2.5/weather?q={}amp;appid={}').format(city_name, api_key)
info = requests.get(url).json()
print(info);
current_weather()
Результат: В каком городе вы находитесь?: Париж
И больше ничего.
Комментарии:
1. Это, вероятно, может быть вызвано
info
бытиемNone
. Что вы пытались отладить? Знакомы ли вы с настройкамиbreakpoint()
s? Это хороший пример использования для этого. Напишитеresponse = requests.get(url)
, после назначения URL-адреса установите точку останова и проверьте ее. Взгляните на docs.python.org/3/library/pdb.html для получения дополнительной информации.2. Я не знал о точках останова. Я в некотором роде новичок в этом, так что это хорошая информация. По какой-то причине sublime не выводил никакой информации. Я использовал pycharm, и это сработало. Не знаю, в чем была проблема.
3. кстати, вам не нужны
()
все эти веревочки
Ответ №1:
Я сам попробовал код, и, похоже, он должен сработать. Похоже , у вас есть точка с запятой после print(info)
, относительная ошибка при возврате к python после других языков.