增量运算符如何输入增量变量?OpenWeather API无法获取天气预报求助
问题1:增量运算符——如何输入增量变量?
咱们先聊聊增量运算符的用法,在Python里最常用的增量操作就是+=啦,它能帮你快速给变量做累加,比写变量 = 变量 + 数值简洁太多。举个简单的例子:
# 初始化计数器 count = 0 # 每次循环给count加1(增量操作) for _ in range(5): count += 1 print(count) # 会依次输出1、2、3、4、5
除了+=,还有对应的递减运算符-=(比如count -= 1就是给变量减1),如果是乘除类的增量,还有*=和/=(比如total *= 2就是把变量乘以2)。
简单来说,增量变量的使用逻辑就是:先定义好初始变量,再用变量 += 增量值的格式完成增量操作就行啦。
问题2:OpenWeather API获取天气预报失败的排查与修复
我看了你贴的代码,发现几个可能导致拿不到数据的问题,咱们一个个来解决:
问题1:URL拼接的转义字符错误
你代码里用了&APPID=xxxxxxxxx,这里的&是HTML转义字符,直接放到API请求URL里会被当成无效参数,得换成普通的&才行。
问题2:重复定义不必要的变量
你在while True循环里每次都重新定义APPID和id,这完全没必要,把它们放到循环外面定义一次就好,避免冗余的重复赋值。
问题3:状态码的类型匹配问题
OpenWeather API返回的cod字段有时候是整数类型(比如200),但你用字符串"200"去比较,可能会导致判断失败。最好统一转成字符串后再比较,或者直接用整数判断。
修复后的完整代码
import json import requests import urllib.parse # 把固定参数放到循环外面,避免重复定义 APPID = 'xxxxxxxxxxxx' # 替换成你的真实APPID city_id = '1283378' base_url = 'https://api.openweathermap.org/data/2.5/forecast?' while True: # 用字典管理参数,再编码拼接,更清晰不易错 params = { 'id': city_id, 'APPID': APPID } main_url = base_url + urllib.parse.urlencode(params) response = requests.get(main_url).json() # 加个异常处理,避免API返回异常时崩溃 try: status = response.get('cod', '') print(f"状态码: {status}\n") # 统一转成字符串比较,避免类型不匹配 if str(status) == "200": # 遍历forecast列表获取预报数据,这里取前5条示例 for forecast in response['list'][:5]: date_time = forecast['dt_txt'] temp = forecast['main']['temp'] weather_desc = forecast['weather'][0]['description'] print(f"时间: {date_time}") print(f"温度: {temp}K(转摄氏度可减273.15)") print(f"天气描述: {weather_desc}\n") else: print(f"API请求失败,错误信息: {response.get('message', '未知错误')}\n") except KeyError as e: print(f"解析响应失败,缺少字段: {e}\n") # 加个退出条件,不然会无限循环 user_input = input("输入q退出,按回车继续查询: ") if user_input.lower() == 'q': break
额外提示
- 确保你的APPID是有效的,没有过期或者被限制调用次数
- 如果需要直接获取摄氏度/华氏度,可以在参数里加
'units': 'metric'(摄氏度)或'units': 'imperial'(华氏度),不用自己转换温度单位啦
内容的提问来源于stack exchange,提问作者Rmm
相关产品推荐
相关产品推荐

