为什么它会继续假阳性?

时间:2017-06-21 09:13:43

标签: python string loops if-statement letter

为什么我的代码会在我编写的代码中继续返回?

def alphaToPhone(alpha):
    for i in range(len(alpha)):
        if i=="b" or "k" or "c":
            phone="yes"
        else:
            phone="no"
    return phone

print(alphaToPhone("23ht"))

4 个答案:

答案 0 :(得分:7)

因为非空字符串在Python中评估为True。您的问题的解决方案可能是以下之一

if i=="b" or i == "k" or i == "c":

if i in ["b", "k", "c"]:

除此之外,您正在迭代一组错误的值。将您的for替换为

for i in alpha:

答案 1 :(得分:3)

您错过了支票

  def alphaToPhone(alpha):
        for i in alpha:
            if i == "b" or i == "k" or i == "c":
                phone="yes"
            else:
                phone="no"
        return phone

  print(alphaToPhone("23ht"))

答案 2 :(得分:2)

您的情况i=="b" or "k" or "c"可能不是您想要的。它总是返回true,因为"k"(和"c")也是如此。你想要的是:

if i=="b" or i=="k" or i=="c":

或者,更好:

if i in {"b", "c", "k"}:

答案 3 :(得分:1)

你的代码应该是这样的:

def alphaToPhone(alpha):
    for ch in alpha:
        if ch == "b" or ch=="k" or ch=="c":
            phone="yes"
        else:
            phone="no"
    return phone

print(alphaToPhone("23ht"))