Python,但似乎满足条件但无法识别语句

时间:2018-07-16 13:34:08

标签: python if-statement

我试图在每次有一个新字母时都向计数加1并跟踪加倍的字母,但是python并没有进入if语句,尽管第6行显示了满足if语句的条件。我想念什么?

def duplicate_count(text):
    count = 0
    doubled_letters = []
    for i in text:
        print (i)
        print(i in doubled_letters)
        if i in doubled_letters == False:
            count += 1
            doubled_letters.append(i)
    print(count)
    print(doubled_letters)
    return count

duplicate_count("abbcdea")

这将返回:

a
False
b
False
b
False
c
False
d
False
e
False
a
False
0
[]

2 个答案:

答案 0 :(得分:7)

in是比较运算符,因此它与== gets chained一起使用。您的表情相当于

(i in doubled_letters) and (double_letters == False)

可以说,您可以使用明确的括号来“打破链条”:

if (i in double_letters) == False:

,但是很少需要直接比较布尔文字。只是写

if i not in double_letters:

(请注意,not in是一个单字运算符,不是notin的应用。与in等效的是{{1} }。

答案 1 :(得分:0)

除了操作员的错误使用,我认为您的逻辑也有缺陷。看来您正在尝试获取重复的字母数,但我认为您的程序无法做到这一点。

我想你期望这样的事情:

def duplicate_count(text):
    count = 0
    letters = []
    for i in text:
        if i not in doubled_letters:
            letters.append(i)
        else:
            count += 1

    print(count)
    return count

duplicate_count("abbcdea")

在上面的代码中,我试图将每个字母添加到列表中,如果它们重复,则会增加计数。基于此,您将得到2,因为ab在输入中重复。

相关问题