我必须编写线性搜索代码,但我的代码似乎无法正常工作

时间:2019-03-23 01:39:48

标签: python linear

我需要编写一个代码,对句子中的字符进行线性搜索。我必须在不使用任何内置函数的情况下做到这一点。

程序应输出字符在索引中的位置。

如果字符不在句子中,则应输出-1。

我尝试编写代码,但是它输入了句子和字符,但是不起作用。

def linear_search(intList,target):
    found = False
    count = 0
    while count < len(intList):
        if intList[count] == target:
            count = count + 1
            found = True
            break


    return found

sentence = input('Enter a sentence: ')
character = input('Enter a character: ')
character_found = linear_search(sentence,character)
if character_found:
    print("The character is", count, "on the index")
else:
    print("The character is -1")

2 个答案:

答案 0 :(得分:0)

您可能想要这样:

def linear_search(intList, target):
    count = 0
    while count < len(intList):
        if intList[count] == target:
            return count

        else:
            count += 1

    return -1

您的代码存在问题

  1. 如果当前索引处的值等于target,那么您已找到它!您可以只返回count。如果不是,请然后增加count。当前,您的代码执行相反的操作。

  2. 您的代码返回found,这意味着它只会返回TrueFalse。实际上不需要found变量,因为您可以通过返回来中断该函数,但是无论如何,您都应该返回count

  3. 在函数之外,您尝试引用count。这是行不通的,因为count局部变量:每次运行函数时都会创建count的新实例,并在函数返回后销毁。顺便说一句,这是您应该返回count而不是found的另一个原因:您可以只检查count == -1

答案 1 :(得分:0)

您陷入无限循环,因为只有在找到解决方案后才更新def linear_search(intList, target): found = False count = 0 while count < len(intList): if intList[count] == target: found = True break count = count + 1 变量。

while循环的正确实现:

def linear_search(intList, target):
    found = False
    count = 0
    for i in range(len(intList)):
        if intList[i] == target:
            found = True
            count = i
            break
    return found

我还建议使用for循环而不是while循环来防止此错误:

function toggleWindow() {
  $('.fullScreenWindow').toggleClass('show');
}

我还注意到了其他一些错误,但是由于它们不是您的问题的一部分,因此我将让您首先尝试自己解决这些问题。