我正在尝试计算‘code’在一个子字符串中出现的次数,但是‘d’可以是任何字母,所以‘cope’和‘coze’也会被计算在内。我刚刚开始学习Python,我确信这非常简单,或许正则表达式也可以工作,但是我正在做的练习并不需要它。这只是一个网站上的练习题,不是为了学校或任何事情。任何帮助都将不胜感激。我试过所有我能想到的方法。这是我的最新版本,但它会出错并显示list out out my代码看起来像这样:
def count_code(str):
sum = o
for i in range(len(str)-1):
if str[i:i+1] == ‘co’ and str[i+4] == ‘e’:
sum += 1
else:
sum = 0
return sum调用将是:
count_code(‘codeeoedeeicoze’)错误:字符串索引超出范围
发布于 2020-06-07 04:36:12
或者这里有一个更接近你的代码,但是有一些各种各样的问题:
def count_code(word):
result = 0
for i in range(len(word)-3):
if word[i:i+2] == "co" and word[i+3] == "e":
result += 1
return result
print(count_code('codeeoedeeicoze'))发布于 2020-06-07 04:34:16
你可以通过re.finditer找到所有"co“的匹配项。之后,遍历找到的索引并检查第四个字母是否为"e“
再次重申,您绝对不应该使用sum和str作为变量/参数,因为它们是关键字。
def count_code(code):
import re
sum_l = 0
items = [ m.start() for m in re.finditer('co', code)]
for item in items:
if item+3 < len(code):
if code[item+3] == "e":
sum_l += 1
return sum_l
print(count_code("codeeoedeeicoze"))
OUT: 2发布于 2020-06-07 04:40:51
首先,使用str作为形参是不可取的。试试这个
def count_code(s):
sum = 0
for i in range(len(s) - 3):
if s[i : i + 2] == "co" and s[i + 3 : i + 4] == "e":
sum = sum + 1
return sum
print(count_code("codeeoedeeicoze"))https://stackoverflow.com/questions/62237576
复制相似问题