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()参数必须是字符串或数字
我知道,但我似乎无法找到我的错误,我知道你不能将数组分开并浮动......谢谢大家!
答案 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
您只需要除以转换平均值的值数。