Я изучаю "Питон для всех" книгу, написанную Чарльзом Р. Северансом, и у меня есть вопрос к упражнению2 из главы 7.
Задача состоит в том, чтобы просмотреть файл mbox-short.txt и «Когда вы столкнетесь со строкой, начинающейся с« X-DSPAM-Confidence: », отделите строку, чтобы извлечьчисло с плавающей точкой в строке. Подсчитайте эти строки, а затем вычислите общее значение достоверности спама из этих строк. Когда вы достигнете конца файла, выведите среднюю достоверность спама. "
Вот мой способ выполнения этой задачи:
fname = input('Enter the file name: ')
try:
fhand = open(fname)
except:
print('File cannot be opened:', fname)
exit()
count = 0
values = list()
for line in fhand:
if line.startswith('X-DSPAM-Confidence:'):
string = line
count = count + 1
colpos = string.find(":")
portion = string[colpos+1:]
portion = float(portion)
values.append(portion)
print('Average spam confidence:', sum(values)/count)
Я знаю, что этот код работает, потому что я получаю тот же результат, что и в книге, однако я думаю, что этот код может быть проще.Причина, по которой я так думаю, заключается в том, что я использовал список в этом коде (объявил его, а затем сохранил значения в нем).Тем не менее, «Списки» - следующая тема в книге, и когда я решал эту задачу, я ничего не знал о списках, и мне пришлось гуглить по ним.Я решил эту задачу таким образом, потому что это то, что я сделал бы на языке R (с которым я уже хорошо знаком), я бы создал вектор, в котором я буду хранить значения из своей итерации.
Итак, мой вопрос: можно ли упростить этот код?Могу ли я выполнить ту же задачу, не используя список?Если да, как я могу это сделать?