You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

增量运算符如何输入增量变量?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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:31:19