运行此代码时,print
函数不起作用,因此我尝试将其移动并检查是否有任何错误,但根本不起作用。
def is_substring(small,big):
count=0
for move in range(len(big)):
if big[move:move+len(small)] == small:
return True
count+=1
return False
print(f"we found {count} similar words")
is_substring('hi','hi and Hello or hi')
答案 0 :(得分:7)
在调用打印之前,您似乎return
正在使用。
return 'something'
将退出函数,将'something'
返回到函数调用的来源,因此return True
之后将跳过任何内容。
尝试在所有循环后仅检查count的值:
def is_substring(small,big):
count=0
for move in range(len(big)):
if big[move:move+len(small)] == small:
count+=1
print(f"we found {count} similar words")
return count != 0
is_substring('hi','hi and Hello or hi')
答案 1 :(得分:0)
除了{Tim已回答return
的问题之外,您还可以使用Built-in Functions来简化代码。
总结所有等于len(small)
的{{1}}长度的子字符串-在生成器上使用sum( ),仅生成适合您的small
文本的子字符串:< / p>
small
text =(“有关版本3+特有的关于Python编程的问题,” ”。如果您的问题“ “不是特定于版本的。对Python 2问题使用[python-2.x]标记。”)
def count_substring(text,small):
len_small = len(small)
# xt[i:i+len_small] == small is a boolean, which evaluates to 1 if True else 0
return sum( text[i:i+len_small] == small for i in range(len(text)-len_small) )
输出:
print(count_substring(text,"python"))
print(count_substring(text,"the"))
print(count_substring(text,"c#"))
由于内置,而且由于我最多只检查2
3
0
-使用更少的迭代,所以这有点短。无论如何,之后的切片比range(len(text)-len_small
短。您可以通过比较small
is_substring(..)
部分
({count_substring(text,"c#") > 0
来自https://stackoverflow.com/questions/tagged/python-3.x)
答案 2 :(得分:0)
var arr = new object[] {0, string.Empty, null};
我认为这也可以为您提供帮助。
您具有布尔类型return并计算相似的长字符串单词和短单词。