几周前我刚刚开始学习Python,我想编写一个函数来打开一个文件,计算并添加每行中的字符并打印出那些与文件中的字符总数相等的字符。
例如,给定文件test1.txt:
lineLengths('test1.txt')
输出应为:
15 + 20 + 23 + 24 + 0 = 82(+0可选)
这是我到目前为止所做的:
def lineLengths(filename):
f=open(filename)
lines=f.readlines()
f.close()
answer=[]
for aline in lines:
count=len(aline)
它完成了我想要它做的事情,但我不知道如何在打印功能时包含所有添加在一起的数字。
答案 0 :(得分:0)
如果您只想打印每行长度的总和,可以这样做:
def lineLengths(filename):
with open(filename) as f:
answer = []
for aline in f:
answer.append(len(aline))
print("%s = %s" %("+".join(str(c) for c in answer), sum(answer))
如果您还需要跟踪所有单独行的长度,则可以使用append
方法为答案列表中的每一行添加长度,然后使用sum(answer)
打印总和
答案 1 :(得分:0)
试试这个:
f=open(filename)
mylist = f.read().splitlines()
sum([len(i) for i in mylist])
答案 2 :(得分:0)
这应该有你想要的输出:x + y + z = a
def lineLengths(filename):
count=[]
with open(filename) as f: #this is an easier way to open/close a file
for line in f:
count.append(len(line))
print('+'.join(str(x) for x in count) + "=" + str(sum(count))
答案 3 :(得分:0)
这很简单:
sum(map(len, open(filename)))
open(filename)
返回一个遍历每一行的迭代器,每一行都通过len
函数运行,结果为sum
med。
答案 4 :(得分:0)
在功能中分离你的问题:负责通过返回总行数和其他来格式化每行的总和。
def read_file(file):
with open(file) as file:
lines = file.readlines()
return lines
def format_line_sum(lines):
lines_in_str = []
for line in lines:
lines_in_str.append(str(line)
return "+".join(str_lines))
def lines_length(file):
lines = read_file(file)
total_sum = 0
for line in lines:
total_sum += len(line)
return format_lines_sum(lines) + "=" + total_sum
使用:
print(lines_length('file1.txt'))
答案 5 :(得分:0)
假设你的输出是文字的,这样的东西应该有效。
当您弄清楚如何将数字添加到列表
时,您可以使用pythonsum()
函数
def lineLengths(filename):
with open(filename) as f:
line_lengths = [len(l.rstrip()) for l in f]
summ = '+'.join(map(str, line_lengths)) # can only join strings
return sum(line_lengths), summ
total_chars, summ = lineLengths(filename)
print("{} = {}".format(summ, total_chars))
答案 6 :(得分:0)
从文件中读取行后,您可以使用以下方式计算总和:
sum([len(aline) for aline in lines])