Python 如果字符在字符串中出现三次或三次以上,则计数
我需要确定一个字符串中是否有3个或更多的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
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至少尝试自己创建代码。是的,你可能是对的,这是一个家庭作业类型的问题,如果他花更多的时间在上面,他应该能够解决它。但他确实提出了一个问题,表明了他的意图,他尝试了什么,他的产出是什么。所以我认为这是一个好的,不好的,但好的问题。