>我有以下函数,第二个函数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')