Python初学者,想问一下为什么会这样

img


这个为什么会输出yes啊,明明or旁边的两个都是否。

zsbd

帮你分析一波,耐心看


b = "o"
if b == "y" or "y":  # 原题
    print("yes")
elif b != "Y" or "y":
    print("no")


print(b == "Y" or "y")  # 输出y,说明b不等于y,但是or右边的数非零所以"y" or "y"为真


# 输出 no
if b == "y" or 0:   # b不等于y,但是or右边的数是零所以"y" or "y"为假
    print("yes")
elif b != "Y" or "y":
    print("no")


# 输出yes
if b == "y" or "y":   # 可以看到当if语句执行后即使满足elif条件语句也不会执行
    print("yes")
elif b == "o":
    print("no")


if b != "Y" or "y":   # 将if语句和elif语句条件调换输出no
    print("no")     # 说明"Y" or "y"也为真,这就是你疑惑为什么
elif b == "y" or "y":   # elif为真但是却输出yes的原因
    print("yes")

望采纳

or操作在左边表达式为假时,返回右边表达式的值
b == "Y"为假,但右边"y"为真(这里并非b == "y", 而是直接对字符串”y“取布尔值,因此为真),打印”yes“
一般这种建议用in和not in进行判断

if b in ("Y", "y"):
  print("yes")
else:
  print("no")

把b=="Y"or"y"换成b=="Y"or b=="y"

改正如图:

img

你 代码 写的不对

b = "o"

if b == "y" or b == "Y":
    print("得到了Y")
elif b in ("x","X"):
    print("得到了X")
else:
    print(b)

给你个建议 :代码 与关键字 中间 最好有空格来隔开 这样看起来 整洁 清洗

正确写法如下:

b = "o"
if b == "Y" or b == "y":
    print("yes")
elif b !="Y" or b !="y":
    print("no")
else:
    print(b)