【发布时间】:2017-07-11 11:56:30
【问题描述】:
我是一名 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'
我做错了什么?
更新:正如几位 cmets 指出的那样,除了整数之外,我在该列表中还有一个字符串。我通过重新定义不带字符串的列表来删除它,但我认为这被认为是硬编码,并且分配指令不允许硬编码。如何使用这些公式让 Python 忽略列表中的字符串?
【问题讨论】:
-
看起来
list1至少有一个元素是字符串。list1是如何创建的? -
欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。具体来说,您发布的代码不会重现该问题,因为您的代码在第一个可执行行上就死了。
-
@biocoder 可以发一下list1的内容吗?
-
@Lucas 哦,这就是问题所在!我忘记了我在 list1 中插入了一个字符串标题。谢谢,我会更新我的问题
-
'ABC123' 不是数字。删除它,你的代码就可以工作了。
标签: python list loops sum typeerror