2024-10-01 00:33:43 发布
网友
s=input(str('Enter String:')) bobcount=0 for letter in s: if s[s.find(letter) : s.find(letter)+3]=='bob': bobcount+=1 print(bobcount)
在我看来,我的代码是正确的,但它输出了错误的答案。有人能帮忙吗?在这个例子中,我试图输出字符串中“bob”出现的次数
所以.find()总是返回给定键的第一个实例。假设字符串是bobabob,那么结果是4。因为您遍历字符串,对于每个给定的字母,他都会搜索字母的第一次出现。所以第一个b将导致第一个bob。o不满足if语句。然后是另一个b。但是if语句不会查看第二个b的字符串,然后再查看3个字符……它将使用第一个b的外观,因此从一开始就得到bob
.find()
bobabob
4
b
bob
o
我希望你明白我想说的话!总而言之:
当您在字符串中查找bob并且b的第一次出现是bob组合的一部分时,打印将为您提供字符串中b的数量,因为每个b都将if语句引向第一个bob。如果您的第一个b不是bob组合的一部分,例如breadbobbob,您的结果将始终是0
breadbobbob
0
解决这个问题的简单方法是使用s.count("bob")
s.count("bob")
str.count()
>>> "bobob".count("bob") 1
>>> import re >>> text = "bobob" >>> len(re.findall('(?=bob)', text)) 2
所以
.find()
总是返回给定键的第一个实例。假设字符串是bobabob
,那么结果是4
。因为您遍历字符串,对于每个给定的字母,他都会搜索字母的第一次出现。所以第一个b
将导致第一个bob
。o
不满足if语句。然后是另一个b
。但是if语句不会查看第二个b
的字符串,然后再查看3个字符……它将使用第一个b
的外观,因此从一开始就得到bob
我希望你明白我想说的话!总而言之:
当您在字符串中查找
bob
并且b
的第一次出现是bob
组合的一部分时,打印将为您提供字符串中b
的数量,因为每个b
都将if语句引向第一个bob
。如果您的第一个b
不是bob
组合的一部分,例如breadbobbob
,您的结果将始终是0
解决这个问题的简单方法是使用
s.count("bob")
str.count()
。例如:相关问题 更多 >
编程相关推荐