python 3.4计算.txt文件中的出现次数



我正在为我要上的课编写一个"简单"的小程序。这应该是询问我要搜索哪个团队,然后在.txt文件中返回它在列表中出现的次数。它像它应该的那样请求输入,并且似乎运行得很好!它已经运行了一个小时:)我一点错误都没有——它似乎陷入了循环。提前感谢大家的帮助!

这是我的代码

count = 0
def main():
# open file
    teams = open('WorldSeriesWinners.txt', 'r')
# get input
    who = input('Enter team name: ')
#begin search
    lst = teams.readline()
    while lst != '':
        if who in lst:
            count += 1
teams.close()
print(count)
main()

您不需要手动完成文件计数行。您只需使用.read():

count = lst.count(who)

另一个问题是在函数之外调用teams.close()print(count)

这意味着他们会在你调用main之前尝试执行,而你正试图关闭尚未打开或定义的"团队",所以你的代码不知道该怎么办。打印计数也是如此-计数还没有在函数之外定义,函数还没有被调用。

如果你想在函数外使用它们,在函数末尾你需要return count

此外,在循环中,您正在执行语句count += 1,意思是count = count + 1,但您还没有告诉它第一次运行的计数是多少,所以它不知道应该加什么。通过在函数内部的循环之前定义count = 0来解决此问题。

你有一个无限循环的原因是因为你的条件永远不会得到满足。你的代码永远不应该花一个小时来执行,就像,几乎永远不会。不要让它运行一个小时。

这是一些替代代码。但要确保你理解问题所在。

def main():
    file  = open('WorldSeriesWinners.txt', 'r').read()
    team  = input("Enter team name: ")
    count = file.count(team)
    print(count)
main()

你可以把整个程序放在一行:

print(open('WorldSeriesWinners.txt', 'r').read().count(input("Enter team name: ")))

根据文档:https://docs.python.org/3/library/io.html#io.IOBase.readline,readline返回单行,所以在您的程序中,文件的第一行有无限循环

while lst != ''

你可以试试

for line in teams:
    if who in line:
        count += 1

如果你不介意小写或大写,你可以使用这个修改过的@charles-clayton响应版本!

print(open('WorldSeriesWinners.txt', 'r').read().lower().count(input("Enter team name: ").lower()))

相关内容

  • 没有找到相关文章

最新更新