【问题标题】:How to do linear search in a file?如何在文件中进行线性搜索?
【发布时间】:2018-04-19 03:52:01
【问题描述】:

我是 python 新手,我的作业有问题。我想从一个位置读取一个文件并查找该文件中出现了多少次数字。我已经完成了您阅读文件并获取列表的位置。我还在程序中使用线性搜索来查找数字。但是,无论我做什么,我都会得到数字在列表中的答案。有谁可以帮我离开这里吗? 这是我的代码:

import os.path
fLocation="C://TEMP//"
print("Assumed file location is at: ", fLocation)
fName = input("\nPlease enter a file name with its extension (ex. XXX.txt): ")

try:
    fin = open(fLocation + fName, 'r')

    aStr = fin.read()
    aList = aStr.split()


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

        return found



    mynum=int(input("What is the number you are looking for in the file?"))
    filenum= linearSearch(aList, mynum)
    if filenum:
        print("The number is in index: ",aList)
    else:
        print("The number is not in the list")

【问题讨论】:

  • 你应该学习如何调试你的 Python 代码。
  • 一个明显的问题是您将输入转换为int,但没有以相同的方式转换文件中的单词,数字42不等于字符串'42' ,因此您永远无法通过这种方式找到匹配项。
  • 另外,这段代码也不会运行。至少有两个错误,在第二个错误之后我停止尝试修复它。 minimal reproducible example 必须可运行才能成为实际示例。您还需要包含一个小样本文件进行测试。没有人可以调试您的问题。如果你不让他们复制它。

标签: python linear-search


【解决方案1】:

您得到错误答案是因为您将stringint 进行比较

您的intListstring 而不是int 的列表。您在接受输入时将mynum 解析为int。删除 int 解析,你的字符串就会匹配。

mynum=input("What is the number you are looking for in the file?")

另外,如果您期望print("The number is in index: ",aList) 将打印匹配字符串的索引,那么您将无法获得正确的输出,因为它显示的是输入列表而不是带有索引的列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 2018-09-02
    • 1970-01-01
    • 2014-06-07
    相关资源
    最近更新 更多