【发布时间】:2018-07-19 02:04:07
【问题描述】:
我尝试编写一个函数,该函数接受一个字符串并返回不包含字符串中任何字符的英语单词数。
op= open('words.txt')
def avoids(forbidden):
"""counts the number of words in Enlgish which do not contain any
character found in forbidden str"""
number=0
for line in op:
count=0
for letter in line.strip():
if forbidden.count(letter)==0:
count=count+1
if count==len(line.strip()):
number=number+1
return number
print(avoids('e'))
print(avoids('a'))
运行程序时,print(avoids('e')) 工作正常,打印 37641;然而,print(avoids('a')) 打印 0。不管我在函数调用中作为参数输入的字符串是什么,第一个函数总是返回正确的值,而第二个函数总是返回 0。
我是编码新手,所以我不知道为什么会发生这种情况以及如何解决它。请帮忙。
【问题讨论】:
-
打开和关闭文件inside函数。
-
第一个副本几乎以比其他副本更明显的方式与您的问题完全匹配;第二个有最好的答案。因此,我只是将两者以及该问题的“规范”版本列表中的其他内容都加入了。如果您立即弄清楚如何修复代码以及为什么要修复,不要觉得您必须阅读所有四页上的所有文本;他们只是在那里,以防有人需要他们。
标签: python