必须输出句子中所有数字的线性搜索代码

Posted

技术标签:

【中文标题】必须输出句子中所有数字的线性搜索代码【英文标题】:Linear search code that has to output all numbers in the sentence 【发布时间】:2019-03-26 02:06:16 【问题描述】:

我的线性搜索必须输出所有存在的一个字符的索引。所以如果句子是 Hello,它会打印 L is in index 2 和 3。

我不知道该怎么做。

def linear_search(intList,target):
    found = False
    count = 0
    #starting while loop
    while count < len(intList):
        if intList[count] == target:
            print("The character is", count, "on the index.")
            found = True
            #break while loop
            break
        else:
            count += 1

    if not found:
        print("The character is -1.")

    return count

#inputting sentence and character
sentence = input('Enter a sentence: ')
character = input('Enter a character: ')
character_found = linear_search(sentence,character)

【问题讨论】:

它只打印第一个,因为你一找到第一个就跳出循环。 只是为了澄清我只需要找到字符是否在句子中不止一次,我不必打印出所有字符。因此,如果句子是 Hello,它将打印 L is in index 2 和 3。 【参考方案1】:

它只打印第一个字符,因为您跳出了 while 循环。相反,试试这个:

def linear_search(intList,target):
    found = False
    count = 0
    #starting while loop
    while count < len(intList):
        if intList[count] == target:
            print("The character is", count, "on the index.")
            found = True
        else:
            count += 1

    if not found:
        print("The character is -1.")

    return count

【讨论】:

这给出了一个无限循环 计数应始终递增【参考方案2】:

这是一个使用元组的解决方案:

def linear_search(intList,target):
    found = False
    count = 0
    for i , char in enumerate(sentence):
        if char == target:
            found = True
            print(i , char)
    if not found:
        return -1
    return count

sentence = input('Enter a sentence: ')
character = input('Enter a character: ')
character_found = linear_search(sentence,character)

输出:

Enter a sentence: i have a a time
Enter a character: a
3 a
7 a
9 a
11 a

由于 while 循环中的 break 语句,您的原始代码失败。但是,即使您删除了中断,您也会得到一个无限循环,因为如果找到字符,您永远不会增加计数器。

【讨论】:

以上是关于必须输出句子中所有数字的线性搜索代码的主要内容,如果未能解决你的问题,请参考以下文章

线性搜索未返回预期输出[重复]

洛谷——基础搜索

使用文本文件 C# 进行线性搜索 [重复]

组装:我的线性搜索代码有问题

阅读文字段落。文件,拆分成句子,并打印到新文本。 c#中的文件

线性和二进制搜索逻辑错误