Это самый компактный код, который я могу придумать прямо сейчас: (обновлен для обработки n
в конце, спасибо, @JonClements!)
with open('file.txt', 'r') as fin:
ans = sum(int(line) for line in fin if line.strip().isnumeric())
Для структуры кода, которая у вас есть, вы также можете пойти на это:
f = open('data.txt', 'r')
ans = 0
for line in f:
try:
ans += int(line.strip())
except ValueError:
pass
Правка: поскольку путаница с «n» устранена, первый пример может быть таким же простым, как
with open('file.txt', 'r') as fin:
ans = sum(int(line) for line in fin)
Или даже этот однострочный:
ans = sum(int(line) for line in open('file.txt', 'r'))
Но есть определенные риски при работе с файлами, поэтому настоятельно не рекомендуется.
person
Sufian Latif
schedule
17.08.2018