我正在学习python,我的任务是这样的
这是我的代码:
def is_substring(target, string):
for x in range(len(string)):
return x==target
print(is_substring('bad', 'abracadabra'))
print(is_substring('dab', 'abracadabra'))
对于第一个调用,它工作正常,但是对于第二个调用,它说false而不是true。有人可以告诉我为什么吗?
答案 0 :(得分:1)
x
就是索引本身,如0、1、2、3、4...。
可以使用string[x]
来获取索引处的单个字符。
但是,切片使用[start:stop:step]
表示法,其中步骤是可选的。
在这里,您需要检查的子串长度的一部分。索引为x
且长度为len(target)
的切片为string[x: len(target) + x]
答案 1 :(得分:0)
我相信这就是您想要的:
def is_substring(target, string):
for i, j in enumerate(string): # i represents the index
if target == string[i:i+len(target)]: # used string slicing for a range that is equal to the length of the target substring
return True
else:
return False
print(is_substring("dog", "dogie"))
print(is_substring("hello", "hi"))
输出:
True
False
显然,这不是最简单的方法,但这是满足您特定要求的方法:)
答案 2 :(得分:-1)
x
总是要返回false
。因为您使用range(len())
,所以x
始终是整数。 x == any_string
总是会返回false
。而且,正如另一个人所说,这是一种古怪的方法。但是当我们学习时,我们都会经历像这样的古怪的事情。