调用OpenWeather API的Python程序接收城市输入后停止运行问题
问题原因
- 修改后的代码遗漏了
import requests导入语句:原可运行代码的首行引入了requests依赖库,修改后删除了该行,执行到requests.get()时会直接触发未定义错误,程序静默崩溃退出,无后续输出。 - 无异常捕获与请求校验逻辑:即使出现网络异常、API密钥错误、输入城市不存在等问题,程序也不会输出错误提示,直接终止运行。
解决方法
- 补全
import requests语句到代码的首行,保证依赖库正常导入。 - 增加请求校验和异常捕获逻辑,方便快速定位各类报错场景。
修改后的可运行代码如下:
import requests def current_weather(): city_name = input('What city are you in?: ') # 替换为你自己的OpenWeather API密钥 api_key = 'My api code' url = 'http://api.openweathermap.org/data/2.5/weather?q={}&appid={}'.format(city_name, api_key) try: # 增加超时设置,避免网络差时长时间无响应 resp = requests.get(url, timeout=10) # 校验HTTP请求状态是否正常 resp.raise_for_status() info = resp.json() # 校验OpenWeather返回的业务状态 if info.get('cod') == 200: print(info) else: print(f"API返回错误:{info.get('message', '未知业务错误')}") except Exception as e: print(f"运行出错:{str(e)}") current_weather()
如果修改后仍有报错,可优先排查以下场景:
- 输入的城市名拼写正确,重名城市可添加国家码后缀区分,比如输入
Paris,FR对应法国巴黎,避免匹配到其他同名城市 - 确认你使用的API密钥有效,未超出调用频率限制
内容的提问来源于stack exchange,提问作者IdkCodePlsHelp
相关产品推荐
相关产品推荐

