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

基于条件向数组追加元素时if语句不符合预期,求原因解析

问题出在你的条件判断写法上!

嘿,我一眼就瞅见问题啦——你的if语句逻辑写错了,导致不管x是什么值,条件都会成立,所以Judith也被误加到new_staff里了。

错误原因详解

你写的条件:

if x == "Reuben" or "Harry" or "Jonathan":

在Python里会被拆解成:

if (x == "Reuben") or ("Harry") or ("Jonathan"):

而非空字符串在布尔判断中会被视为True,所以哪怕x是Judith,后面的"Harry"和"Jonathan"本身就是真值,整个条件就永远为True,所有元素都会被添加到new_staff里。

正确的写法有两种

写法一:用in判断元素是否在列表中(更简洁推荐)

all_staff = ["Judith", "Harry", "Jonathan", "Reuben"]
new_staff = []
def person_finder(staff):
    for x in staff:
        if x in ["Reuben", "Harry", "Jonathan"]:
            new_staff.append(x)
        else:
            continue
    return new_staff
selected = person_finder(all_staff)
def the_men(people):
    for x in people:
        print(x + " is a man")
the_men(selected)

写法二:完整写出每个判断条件

把原条件改成逐个判断x与目标值的相等关系:

if x == "Reuben" or x == "Harry" or x == "Jonathan":

修改后的运行结果

运行修改后的代码,就只会输出:

Harry is a man
Jonathan is a man
Reuben is a man

完美符合你的预期啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:59:15