我试图在每次有一个新字母时都向计数加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
[]
答案 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
是一个单字运算符,不是not
到in
的应用。与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,因为a
和b
在输入中重复。