Не понимаю, как сложить элементы в учебной задаче Python

Проблема такая, требуется достать все цены на товары, сложить их и разделить на их количество (узнать среднюю цену). Я не могу понять, как числа привести к int (вроде сделал, но не уверен, что это правильно) и сложить между собой.

from bs4 import BeautifulSoup

price_html = """
<table cellspacing="0" cellpadding="0" border="1">
  <tbody>
    <tr class="even_row">
      <th><p>№ п/п</p></th>
      <th class="armor"><p>Название</p></th>
      <th class="price"><p>Цена</p><p>рублей</p></th>
    </tr>
    <tr class="odd_row">
      <td><p>1.</p></td>
      <td class="armor"><p>Щит</p></td>
      <td class="price"><p>375</p></td>
    </tr>
    <tr class="even_row">
      <td><p>2.</p></td>
      <td class="armor"><p>Шлем</p></td>
      <td class="price"><p>297</p></td>
    </tr>
    <tr class="odd_row">
      <td><p>3.</p></td>
      <td class="armor"><p>Кольчуга</p></td>
      <td class="price"><p>565</p></td>
    </tr>
    <tr class="even_row">
      <td><p>4.</p></td>
      <td class="armor"><p>Булава</p></td>
      <td class="price"><p>1992</p></td>
    </tr>
    <!-- Сюда может добавиться неизвестное количество элементов экипировки.
      Их тоже нужно учитывать при расчёте средней цены. -->
  </tbody>
</table>
"""

soup = BeautifulSoup(price_html, 'lxml')


result = soup.find_all('td', attrs={'class': 'price'})
length = len(result)
y = []
y = list(map(int, y))
for i in result:
    y.append(i.text)

# print(result)
# print('Средняя цена богатырских доспехов: ', result, 'рублей')

Ответы (2 шт):

Автор решения: Леонид

Нашел такое решение:

soup = BeautifulSoup(price_html, 'lxml')

result = soup.find_all('td', attrs={'class': 'price'})
length = len(result)
y = []
for i in result:
    y.append(i.text)

y = [int(item) for item in y]
final = sum(y)/length
# print(sum(y))
print('Средняя цена богатырских доспехов: ', final, 'рублей')
→ Ссылка
Автор решения: MarianD

Знакомая «Ошибка молотка» («Ошибка XY», XY Problem):

Вы не хотите сложить элементы, вы хотите их среднее значение.


Вы можете применить функцию mean() из стандартного модуля statistics:

import statistics    

statistics.mean(y)

или нагляднее, но менее рекомендуемое

from statistics import mean

mean(y)

Я не могу понять, как числа привести к int (вроде сделал, но не уверен, что это правильно)

В вашем коде нужно немножко изменить порядок этих 3 команд с

y = list(map(int, y))
for i in result:
    y.append(i.text)

на

for i in result:
    y.append(i.text)
y = list(map(int, y))

чтобы перевод в тип int выполнился только после полного заполнения списка.

Затем:

import statistics

avg = statistics.mean(y)
print('Средняя цена богатырских доспехов: ', avg, 'рублей')

Примечание:

Для Питона 3.6+ лучше применить f-строку:

print(f'Средняя цена богатырских доспехов: {avg:.2f} рублей')

Это красивее и результат будет всегда изображен с 2 десятичными цифрами (правильно округленный).

→ Ссылка