函数仅在第一次调用时正常工作



>我有以下函数,第二个函数count_forbid(a)只能工作1次。在这个例子中,它计算不包含字母'c'的单词的正确值,但对于y它返回零。所以这意味着代码第一次只能做对,而对于所有其他时间它返回零:

import string
fin = open('words.txt')
def forbid_or_not(word,forb):
    for letter in word:
        if letter in forb:
            return False
    return True
def count_forbid(a):
    count = 0
    for line in fin:
        word1 = line.strip()
        if forbid_or_not(word1,a):
            count += 1
    return count
x = count_forbid('c')
y = count_forbid('d')
使用

以下命令循环访问文件后:

    for line in fin:

它将到达终点,试图重复将没有效果。

将函数更改为使用上下文管理器,该管理器在调用函数时重新打开文件:

def count_forbid(a):
    count = 0
    with open('words.txt') as fin:  # closes the file automatically
        for line in fin:
            word1 = line.strip()
            if forbid_or_not(word1,a):
                count += 1
    return count

这是在 Python 中打开文件的首选方式。

或者,在调用之间添加fin.seek(0),以使文件指向开头:

x = count_forbid('c')
fin.seek(0)
y = count_forbid('d')

相关内容

  • 没有找到相关文章

最新更新