Я начинающий Python, и у меня есть задача, в которой мне нужно создать свои собственные функции, чтобы найти сумму и среднее из списка. Я попытался сделать следующие формулы:Python: ошибка операнда, когда я пытаюсь запустить функции для поиска суммы и среднего значения
import math
list1 = ['ABC123', 0.00095, 0.00081, 0.0023, 0.00209, 0.0017, 0.00215, 0.00167, 0.00164, 0.00206, 0.00233, 0.00239, 0.00242, 0.0023, 9e-05, 0.00177, 0.001]
def samplesum(my_list):
'''Finds the sum of a list'''
total_sum = 0
for element in my_list:
total_sum += element
return total_sum
def samplemean(my_list):
"""Finds the mean of a list"""
sum_of_num = sum(my_list)
list_mean = sum_of_num/len(my_list)
return list_mean
samplesum(list1)
samplemean(list1)
Когда я запускаю сценарий, я получаю сообщение об ошибке:
File "Task.py", line 136, in <module>
samplesum(list1)
File "Task.py", line 120, in samplesum
total_sum += element
TypeError: unsupported operand type(s) for +: 'int' and 'str'
или если отключить звук из функции samplesum(my_list)
с помощью #
я получаю эту ошибку для samplemean(my_list)
File "Task.py", line 137, in <module>
samplemean(list1)
File "Task.py", line 125, in samplemean
sum_of_num = sum(my_list)
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Что я делаю неправильно?
UPDATE: Как было указано в нескольких комментариях, оказалось, что у меня была одна строка в этом списке в дополнение к целым числам. Я удалил его, переопределив список без строки, но я думаю, что это считается жестким кодированием, а инструкции присваивания не позволяют жесткого кодирования. Как я могу заставить Python игнорировать строки из списка, используя эти формулы?
Похоже, что 'list1' имеет хотя бы один элемент, который является строкой. Как создается «list1»? – Lucas
Добро пожаловать в StackOverflow. Прочтите и следуйте инструкциям по отправке в справочной документации. [Минимальный, полный, проверяемый пример] (http://stackoverflow.com/help/mcve) применим здесь. Мы не можем эффективно помочь вам, пока вы не разместите свой код MCVE и не сможете точно описать проблему. В частности, ваш опубликованный код не воспроизводит проблему, так как ваш код умирает в первой исполняемой строке. – Prune
@biocoder Можете ли вы разместить содержимое списка1? –