我正在尝试计算下面字符串中的字母'l'和'o'。 如果我算上一个字母似乎有效,但只要我计算下一个字母'o',字符串就不会增加总数。我错过了什么?
s = "hello world"
print s.count('l' and 'o')
输出:5
答案 0 :(得分:3)
您可能意味着s.count('l') + s.count('o')
。
您粘贴的代码等于s.count('o')
:and
运算符检查其第一个操作数(在本例中为l
)是否为false。如果为false,则返回其第一个操作数(l
),但不是,因此返回第二个操作数(o
)。
>>> True and True
True
>>> True and False
False
>>> False and True
False
>>> True and 'x'
'x'
>>> False and 'x'
False
>>> 'x' and True
True
>>> 'x' and False
False
>>> 'x' and 'y'
'y'
>>> 'l' and 'o'
'o'
>>> s.count('l' and 'o')
2
>>> s.count('o')
2
>>> s.count('l') + s.count('o')
5
答案 1 :(得分:2)
或者,由于您要计算给定字符串中多个字母的外观,请使用collections.Counter
:
>>> from collections import Counter
>>>
>>> s = "hello world"
>>> c = Counter(s)
>>> c["l"] + c["o"]
5
请注意,您当前使用的s.count('l' and 'o')
would evaluate为s.count('o')
:
表达式
x and y
首先评估x
:如果x
为false,则其值为 回;否则,将评估y
,结果值为 返回。
换句话说:
>>> 'l' and 'o'
'o'
答案 2 :(得分:2)
使用正则表达式:
>>> import re
>>> len(re.findall('[lo]', "hello world"))
5
或map
:
>>> sum(map(s.count, ['l','o']))
5
答案 3 :(得分:0)
代码如下:
import re
name1 = input("What is your name? ")
name2 = input("Whats is their name? ")
c = len(re.findall('[true]', name1 + name2)
如果你有多个字符串。