1
howManyNames = (float(input("Enter how many student names do you want to enter? ")))
studentNames = []
ages = []
averageAge = 0
counter = 0

while (counter < int(howManyNames)):
    studentNames.append(input("Enter student names. "))
    ages.append(float(input("Enter that persons age. ")))
    counter += 1

averageAge = (float(ages)) / (float(howManyNames))
print (averageAge)

我不断收到 TypeError: float() 参数必须是字符串或数字

我知道了,但我似乎找不到我的错误,我知道你不能用和浮动来划分数组......谢谢大家!

4

1 回答 1

0

改变:

averageAge = (float(ages)) / (float(howManyNames))

至:

averageAge = sum(ages) / float(howManyNames)

(注意:出于美学原因,我刚刚删除了多余的括号。)

说明

如果你打开一个 repl 并输入

In [2]: help(float)

你会得到float的文档,上面写着:

Help on class float in module __builtin__:

class float(object)
 |  float(x) -> floating point number
 |  
 |  Convert a string or number to a floating point number, if possible.
 |  
 |  Methods defined here:
...

换句话说,你可以这样做:

In [3]: float(3)
Out[3]: 3.0

In [4]: float("3")
Out[4]: 3.0

但你不能这样做:

In [5]: float([])
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-79b9f7854b4b> in <module>()
----> 1 float([])

TypeError: float() argument must be a string or a number

因为[]是 a而不是字符串或数字,根据其文档list可以接受。float接受列表也没有意义,float因为它的目的是将字符串或数字转换为浮点值。

在您的问题中,您定义:

ages = []

设置ages[](类型list。)

当然,要找到平均值,您需要将值的总和除以存在的值的数量。当然,python恰好有一个内置sum函数可以为您汇总一个列表:

In [6]: sum([])
Out[6]: 0

In [7]: sum([1,2,3]) # 1 + 2 + 3
Out[7]: 6

您只需除以值的数量即可转换平均值。

于 2013-11-13T16:16:51.097 回答