为什么我的python循环函数返回错误值?

时间:2020-04-08 18:50:13

标签: python for-loop

我正在学习python,我的任务是这样的

  1. 定义名为is_substring的函数
  2. 使其接受两个参数
  3. 编写程序,检查是否已接受的第一个参数是第二个参数的子字符串
  4. 使其遍历字符串中的索引位置
  5. 在每个位置检查当前片段是否等于目标子字符串,并相应地返回true或false

这是我的代码:

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。有人可以告诉我为什么吗?

3 个答案:

答案 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。而且,正如另一个人所说,这是一种古怪的方法。但是当我们学习时,我们都会经历像这样的古怪的事情。

相关问题