Программа останавливается после ввода

#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 после других языков.