我正在做我的作业,它要求我使用sum()和len()函数来查找输入数字列表的平均值,当我尝试使用sum()来获取列表的总和时,我得到错误TypeError:+:' int'不支持的操作数类型和' str'。以下是我的代码:
numlist = input("Enter a list of number separated by commas: ")
numlist = numlist.split(",")
s = sum(numlist)
l = len(numlist)
m = float(s/l)
print("mean:",m)
答案 0 :(得分:13)
问题是,当您从输入中读取时,您有一个字符串列表。你可以做第二行这样的事情:
numlist = [float(x) for x in numlist]
答案 1 :(得分:10)
问题是你有一个字符串列表。在计算总和之前,需要将它们转换为整数。例如:
numlist = numlist.split(",")
numlist = map(int, numlist)
s = sum(numlist)
...
答案 2 :(得分:4)
您正在添加字符串,而不是数字,这是您的错误消息所说的内容。
将每个字符串转换为各自的整数:
numlist = map(int, numlist)
然后取平均值(注意我使用float()
的方式与你不同):
arithmetic_mean = float(sum(numlist)) / len(numlist)
您希望在分割之前使用float()
,float(1/2) = float(0) = 0.0
,这不是您想要的。
另一种方法是首先将它们全部float
:
numlist = map(float, numlist)
答案 3 :(得分:0)
Split会返回一个字符串数组,因此在使用sum函数之前需要将它们转换为整数。
答案 4 :(得分:0)
你可以试试这个。
reduce(lambda x,y:x+y, [float(x) for x in distance])
答案 5 :(得分:0)
将字符串输入转换为浮点值列表。这是更新的代码。
numlist = list(map(int,input("Enter a list of number separated by commas: ").split(',')))
l = len(numlist)
s = sum(numlist)
print("mean :",s/l)
答案 6 :(得分:0)
对于Python 2.7
from pyral import Rally
SERVER = 'SERVER'
USER = 'USER'
PASSWORD = 'PASSWORD'
WORKSPACE = 'WORKSPACE'
PROJECT = 'PROJECT'
TARGET_FEATURES = ['F123']
TARGET_USEREMAIL = "123@gmail.com"
if __name__ == '__main__':
rally = Rally(SERVER, USER, PASSWORD, workspace=WORKSPACE, project=PROJECT)
user_req = rally.get('User', fetch=True, query='EmailAddress = "%s"' % TARGET_USEREMAIL)
user = us_req.next()
for feature in TARGET_FEATURES:
f_req = rally.get('Feature', fetch=True, query='FormattedID = %s' % feature)
f = f_req.next()
feature_update = {
"ObjectID": f.oid,
"User": user.ref
}
try:
update_feature = rally.update('Feature', feature_update)
print "=> %s has been updated." % (f.FormattedID)
except:
print "=> Failed to update %s." % (f.FormattedID)