Python 如果字符在字符串中出现三次或三次以上,则计数

Python 如果字符在字符串中出现三次或三次以上,则计数,python,string,Python,String,我需要确定一个字符串中是否有3个或更多的z,如果有,则返回1,否则返回0 例如: print punk('abc') # should return 0 print punk('laz zzzz') # should return 1 我的尝试: def punk(s): lett=('z') for s in lett: if len(s)>=3: return 1 else: if len

我需要确定一个字符串中是否有3个或更多的
z
,如果有,则返回1,否则返回0

例如:

print punk('abc')
# should return 0
print punk('laz zzzz')
# should return 1
我的尝试:

def punk(s):
    lett=('z')
    for s in lett:
        if len(s)>=3:
            return 1
        else:
            if len(s)<=3:
                return 0
def朋克:
lett=('z')
对于s in lett:
如果长度>=3:
返回1
其他:
如属例外(s)
您可以像这样使用内置的:

def punk(s): 
    return int(s.count('z') >= 3)
int(reduce(lambda x,y: x+int(y=='z'), a, 0) >= 3)
def punk(s):
    count = 0
    for letter in s:
        if letter == "z" or letter == "Z":
            count += 1
    if count >= 3:
        return 1
    else:
        return 0
也可以使用以下方式实现此功能:

def punk(s): 
    return int(s.count('z') >= 3)
int(reduce(lambda x,y: x+int(y=='z'), a, 0) >= 3)
def punk(s):
    count = 0
    for letter in s:
        if letter == "z" or letter == "Z":
            count += 1
    if count >= 3:
        return 1
    else:
        return 0

您需要遍历传入的字符串中的每个字符,而不是遍历
lett
中的每个项目

def punk(string):
    letters = ('Z', 'z')
    zCount = 0
    for char in string:
        if char in letters:
            zCount += 1

    return 1 if zCount >= 3 else 0

如果不想使用内置函数,可以尝试以下方法:

def punk(s): 
    return int(s.count('z') >= 3)
int(reduce(lambda x,y: x+int(y=='z'), a, 0) >= 3)
def punk(s):
    count = 0
    for letter in s:
        if letter == "z" or letter == "Z":
            count += 1
    if count >= 3:
        return 1
    else:
        return 0

您的问题是您正在测试
len(s)
,但是
s
是定义的,因为您在lett:
中为s说
。因此,
s
的长度始终为一。另外,当您在lett:
中为s说
时,您正在重新定义
s
,因此您的原始参数被完全覆盖。相反,您可以创建一个计数器,并使用
for
循环和
for c in lett:
。然后,每次
c
'z'
时,您都可以向计数器添加一个。我不会给你写出来,因为这会迫使你作弊,但这是一种方法。

既然
for s in lett
一次生成
s
一个字符(或者如果
lett
是空字符串,则为空字符串),
len
怎么可能不是
0
1
?@Newbie\u 01,不要忘记其中一个答案。然后你必须将其转换为
int
。是的,但我不应该使用内置函数:/“是的,但我不应该使用内置函数:/”对不起,我甚至没有考虑
求和
降低
。它们是如此常见的函数,有些东西我不认为它们是函数。:)不要为他写代码。这显然是家庭作业。@zondo:那么?在SO上询问关于家庭作业的问题是可以的。@zondo与一些新用户不同,OP至少尝试自己创建代码。是的,你可能是对的,这是一个家庭作业类型的问题,如果他花更多的时间在上面,他应该能够解决它。但他确实提出了一个问题,表明了他的意图,他尝试了什么,他的产出是什么。所以我认为这是一个好的,不好的,但好的问题。