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

Python条件判断代码中第二个elif分支未触发执行问题排查

问题原因

你的代码中第二个elif分支永远无法触发,核心错误是直接将range对象作为布尔判断条件,没有做成员归属校验:

  • Python中所有非空内置对象在布尔上下文里都会被判定为True,你写的range(6,21)、range(2,6)都是非空范围,本身作为判断条件时恒为真。
  • 拆解第一个if的判断逻辑:(n %2 != 0) or (n %2 ==0 and range(6,21)),只要输入的n是偶数,n%2 ==0为真,and后面的range对象恒为真,因此整个if条件永远成立——无论输入的偶数是2-5区间、还是大于20,都会直接进入第一个分支打印Weird,根本不会走到后续的elif判断。

举个实际运行的例子,输入n=4(属于2-5的偶数,按规则应该输出Not Weird):

  1. 第一个子条件n%2 !=0结果为False
  2. 第二个子条件n%2 ==0 and range(6,21):n%2==0为True,range(6,21)是非空对象判定为True,因此整个子条件结果为True
  3. 两个子条件做or运算最终结果为True,直接进入第一个分支输出错误结果,跳过后续elif。
修正方案

判断整数是否在指定区间内,需要用in运算符做成员校验,修正后的代码如下:

import math
import os
import random
import re
import sys

if __name__ == '__main__':
    n = int(input().strip())
    if (n % 2 != 0) or (n % 2 == 0 and n in range(6,21)):
        print('Weird')
    elif (n % 2 == 0 and n in range(2,6)) or (n % 2 == 0 and n > 20):
        print('Not Weird')

注:你选取的range范围本身是正确的:range(2,6)左闭右开刚好覆盖2-5的整数,range(6,21)刚好覆盖6-20的整数,只需要补充n in的成员判断即可符合题目要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:27:19