基于条件向数组追加元素时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
相关产品推荐
相关产品推荐

