我是编程新手,我正在尝试编写一个接受文件名作为参数的函数。此函数应该打开文件,读取它并在文件包含“?”时返回True。在文本文件的每一行。 输入文件可以具有指定字符一次或多次。 这就是我到目前为止所做的:
+--------+
|count(1)|
+--------+
|5 |
+--------+
我花了几个小时寻找所有可能的类似解决方案,但没有结果。
答案 0 :(得分:4)
您面临的主要问题是您在第一次迭代中返回。 return
将结束您的函数执行。
如果您要检查所有行是否包含'?',那么检查应该只是一旦找不到'?'就会返回。如果你设法耗尽你的迭代,那么所有的行都有'?'你只需返回True。
def char_finder(filename):
with open(filename, "r") as inputFile:
for line in inputFile:
if '?' not in line:
return False
return True
此外,请注意文件的读取现在使用上下文管理器,这是一种更简洁的方法。
最后,为了完全重构,我们可以使用all函数,它将迭代每一行,并在找到不匹配条件后短路。它几乎就是上面所示的内容,但所有工作都是为我们完成的:
def char_finder(filename):
with open(filename, "r") as inputFile:
return all('?' in line for line in inputFile)
答案 1 :(得分:1)
您可以使用all()
确保所有行都通过您的条件。例如:
def char_finder(filename, char): # lets make it a bit more universal
with open(filename, "r") as f:
return all(char in line for line in f)
print(char_finder("inputfile.txt", "?"))