我试图通过简单地使用
从命令行运行以下函数python filename.py
然而,它并没有做我想要的。
有人可以帮我解决这个问题吗?我确定我错过了很简单的事情......
inFile = ""
inFile = raw_input("Enter the File Name: ")
x = open(inFile, 'w')
def summation(x):
sum = 0
for i in x:
sum = sum + i
return sum
if __name__ == "__main__":
print(summation(x))
希望它能够解释我想要达到的目标,但是如果不是......
我要求raw_input
;这将是一个充满数字的文本文件(每个都在它自己的行上)。该文件应该输入变量x
,然后在summation
函数中使用。最后,使用for循环将每个值相加并返回总和(并在终端中打印)。
答案 0 :(得分:5)
有两个问题:
"w"
参数。sum += int(i)
此外,您应该在阅读完其内容后关闭该文件。行infile = ""
是不必要的。
答案 1 :(得分:3)
更加pythonic版本......
def line_to_int(line):
line = line.strip()
if not line:
# handles the case of empty lines
return 0
return int(line)
def sumfile(f):
return sum(line_to_int(line) for line in f)
if __name__ == "__main__":
fname = raw_input("Enter the File Name: ").strip()
with open(fname) as f:
print(sumfile(f))
或者更简单,只要您不打算在int(line)
的呼叫周围添加错误处理(感谢Jon Clements):
if __name__ == "__main__":
fname = raw_input("Enter the File Name: ").strip()
with open(fname) as f:
print(sum(int(line.strip() or 0) for line in f))