我有以下代码可以正常运行,但是在计算字符数和最长字符行的长度时遇到了一些问题。以下是我的代码:
def stats(file_name):
n_chars = 0
n_words = 0
n_lines = 0
longest_line = 0
with open(file_name) as f:
lines = f.readlines()
n_lines = len(lines)
longest_line = max([len(line) for line in lines])
words = []
line_words = [line.split() for line in lines]
for line in line_words:
for word in line:
words.append(word)
n_words = len(words)
chars = []
line_chars = [list(word) for word in words]
for line in line_chars:
for char in line:
chars.append(char)
n_chars = len(chars)
f.close()
return n_chars, n_words, n_lines, longest_line
你们能看到使代码无法计算正确字符数的任何内容吗?最长的行总是比正确的答案多一。
输入如下:
美丽而丰富的绿色汤, 在一个热的碗里等待! 谁会为这样的精致而屈服? 晚上的汤,美丽的汤! 晚上的汤,美丽的汤!
美女-赞叹不已! 花花公子-oo! 太晚了, 美丽,美丽的汤!
美丽的汤!谁在乎鱼, 野味,或其他菜肴? 谁不会给两个其他一切 潘尼沃思只有美丽的汤吗? 潘尼沃思只有美丽的汤吗?
美女-赞叹不已! 花花公子-oo! 太晚了, 美丽,美丽-全汤!
预期的输出如下:
字符:553 字数:81 行数:21 最长的线:38
实际(失败)输出:
个字符:469 字数:81 行数:21 最长:39
答案 0 :(得分:0)
要获得正确的字符数,您必须计算空格以及其他字符。否则,您将获得较小的价值。像这样:
n_chars = sum( [len(line) for line in lines] )
答案 1 :(得分:0)
您只计算非空白字符。所需的字符数可能包含空格。
def stats(file_name):
n_chars = 0
n_words = 0
longest_line = 0
with open(file_name) as lines:
for n_lines, line in enumerate(lines, 1):
longest_line = max(longest_line, len(line.rstrip('\n'))
n_chars += len(line)
n_words += len(line.split())
return n_chars, n_words, n_lines, longest_line