python-3.x - 返回函数外
问题描述
有一个语法错误,说我在函数之外返回
我尝试了人们使用那里的代码解决相同问题的所有可能解决方案,但我仍然遇到相同的错误
错误在行返回结果的第 32 行
问题介绍 在这个问题中,我们提出一个简单的问题:一个字符串作为另一个字符串的子字符串出现多少次?回想一下子串的不同出现可以相互重叠。例如,ATA 在 CGATATATCCATAG 中出现了 3 次。
问题描述任务。查找字符串中所有出现的模式。
输入格式。字符串和 .
约束。1≤|| ≤ 106;1≤|| ≤ 106;两个字符串都在 A、C、G、T 上。
示例 1. 输入:输出:1 12 4 1.5 2 4 4 24 TACG GT 解释:模式比文本长,因此在文本中没有出现。示例 2. 输入:输出:02 解释:模式出现在位置 1 和 3(并且这两个出现相互重叠)。示例 3. 输入:输出:139 解释:模式出现在文本中的位置 1、3 和 9。ATA ATATA ATAT GATATATGCATATACTT
# python3
import sys
def compute_prefix_function(pattern):
s = [0] * len(pattern)
border = 0
for i in range(1, len(pattern)):
while (border > 0) and (pattern[i] != pattern[border]):
border = s[border - 1]
if pattern[i] == pattern[border]:
border = border + 1
else:
border = 0
s[i] = border
return s
def find_pattern(pattern, text):
S = pattern + '$' + text
s = compute_prefix_function(S)
result = []
p = len(pattern)
for i in range(p + 1, len(S)):
if s[i] == p:
result.append(i - 2 * p)
return result
if __name__ == '__main__':
pattern = sys.stdin.readline().strip()
text = sys.stdin.readline().strip()
result = find_pattern(pattern, text)
print(" ".join(map(str, result)))
解决方案
意识到空格/缩进在 python 中很重要,并替换了大多数其他语言中用于定义范围的 { }。像这样的东西是一个适当的功能(尽管返回并不是真正必要的):
def foo():
print("bar")
return
但是,这样做会导致类似于您的错误消息,因为现在的返回超出了函数的范围:
def foo():
print("bar")
return
有关更多信息,只需 Google for python 缩进教程。