我有问题划分这个python代码

时间:2013-11-13 16:03:18

标签: python python-3.x

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()参数必须是字符串或数字

我知道,但我似乎无法找到我的错误,我知道你不能将数组分开并浮动......谢谢大家!

1 个答案:

答案 0 :(得分:0)

变化:

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

为:

averageAge = sum(ages) / float(howManyNames)

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

<强>解释

如果您打开一个代表并输入

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

因为[]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

您只需要除以转换平均值的值数。