count调用函数find,以确定在从指定索引开始的单词中可以找到多少个字符。 请参见“代码”。
困惑的部分:
使用函数" count "可以获得以下程序输出:
可以看到几个输出是重复的。
如果不从发现中删除印刷品,如何避免这种情况? 有可能吗,还是我必须删除它?
我知道这两个函数会是更简单的函数,但我想知道如何使用另一个函数调用函数。
必须也提到变量计数的值是正确的。唯一的问题是重复的输出。
代码:
effind(word,letter,index ) :
start_ind=index
wileindex(Len ) word ) :
if word[index]==letter:
打印' % sfoundatindex % s ' % (letter,index ) )。
返回索引
索引=1
else:
print ' % sisnotfoundinstring ' % s ' whenstartingfromindex % s ' % (letter,word,start_ind )
返回- 1
efcount(word,letter,index ) :
count=0
无线xlen (word ) :
iffind(word,letter,index )!=-1:
count =1
index=find(word,letter,index ) 1
print ' % sisshown % stime sin ' % s ' % (letter,count,word )
count('Banana ',' a ',0 ) ) ) )。
解决方法:
在while循环中,每次迭代都有两个find ()调用。
iffind(word,letter,index )!=-1:
count =1
index=find(word,letter,index ) 1
每次打印时:
打印' % sfoundatindex % s ' % (letter,index ) )。
find ) )的值进行计算并保存,从而“memoize”。
ound=find(word,letter,index ) ) )。
if found!=-1:
count =1
索引=found 1
这是一个更优雅的问题解决方案:
word='banana '
letter='a '
occurences=[(index,value ) for index,valueinenumerate(word ) if value==letter]
for occurence in occurences:
print 'Letter ',letter,' has been found at index ',index
print 'Letter ',letter,' has been found a total of ',len((occurences ),' times.'
标签: python,python-2-7
资料来源: https://codeday.me/bug/2019 05 19/1136404.html