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

Python季节判断代码:使用'in'无输出,仅'not in'有效问题求助

问题原因解析

你的核心问题出在**month_list的结构和in运算符的判断逻辑**上:

  • month_list是一个包含四个子列表的列表,每个元素都是类似['January', 'February', ...]的月份集合,而input_month是字符串类型的月份名称。
  • 当你写input_month in month_list[0:]时,Python会检查这个字符串是否是month_list里的直接元素——也就是是否等于某个子列表,这显然不可能,所以这个条件永远为False。此时month_check函数不会执行任何代码,直接结束,自然没有任何输出。
  • 而用input_month not in month_list[0:]时,条件永远为True,所以会调用which_month(),程序才会继续执行并输出结果。

另外你的代码还有几个额外问题:

  • which_dates2函数里错误使用了month_spring列表(该函数对应夏季判断),which_dates3里错用了month_winter,逻辑完全混乱。
  • 日期判断里出现了<=32的错误(没有月份有32天)。
  • month_check里的return which_month()没必要,直接调用which_month()即可,因为该函数没有返回值。
  • 部分分支未处理无效日期的情况(比如which_dates1里December的分支,日期不符合时没有输出Invalid)。
修正后的代码
input_month = input().strip()
input_day = int(input())

# 定义各季节对应的月份及日期区间规则
season_rules = {
    'Winter': [
        ('January', (1, 31)),
        ('February', (1, 29)),  # 简单处理闰年,需严格判断可额外添加逻辑
        ('March', (1, 19)),
        ('December', (21, 31))
    ],
    'Spring': [
        ('March', (20, 31)),
        ('April', (1, 30)),
        ('May', (1, 31)),
        ('June', (1, 20))
    ],
    'Summer': [
        ('June', (21, 30)),
        ('July', (1, 31)),
        ('August', (1, 31)),
        ('September', (1, 21))
    ],
    'Autumn': [
        ('September', (22, 30)),
        ('October', (1, 31)),
        ('November', (1, 30)),
        ('December', (1, 20))
    ]
}

def check_season():
    # 先验证月份是否合法
    valid_months = [month for rule in season_rules.values() for month, _ in rule]
    if input_month not in valid_months:
        print('Invalid')
        return
    
    # 遍历季节规则判断日期
    for season, rules in season_rules.items():
        for month, (start_day, end_day) in rules:
            if input_month == month:
                if start_day <= input_day <= end_day:
                    print(season)
                    return
                else:
                    print('Invalid')
                    return

check_season()
修正说明
  1. 用字典重新组织季节规则,逻辑更清晰,避免子列表嵌套导致的判断混乱。
  2. 先统一验证月份合法性,再匹配对应的日期区间。
  3. 修正了日期范围的错误,每个月份使用正确的天数上限。
  4. 所有分支都处理了无效输入的情况,不会出现无输出的问题。

内容的提问来源于stack exchange,提问作者Peraza99

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 19:50:37