返回列表的百分比



我应该先说一下,我几乎没有写过什么代码,也几乎没有写过Python,而且有一段时间没有真正做过多少数学了,上周我在一次考试中有一道问题我解决不了。我将在下面张贴我的代码,有人知道如何解决它,我在哪里错了解决它?如有任何建议,我将不胜感激。

编写一个名为percentageUnderTenPounds的函数,它接受一个价格列表作为输入,并返回低于10磅的价格的百分比。参数:一个浮点数列表(包含价格),返回(单个浮点值,包含低于£10的百分比)"
def percentageUnderTenPounds(prices):
under10 = 0
sum1 = 0
for number in prices: 
if number > 10:
sum1 += 1

under10 = (sum1 /len(prices)) * 100

return under10

您实际上计算了(列表中)大于10磅的数字的百分比。你首先计算大于10磅的数字(在sum1中),然后除以总数,得到大于10磅的数字的百分比。

稍微改变一下你的解决方案就会得到这样的结果:

def percentageUnderTenPounds(prices):
under10 = 0
for number in prices: 
if number < 10:
under10 += 1
under10Percentage = (under10 / len(prices)) * 100
return under10Percentage

请注意,我没有计算大于10的数的计数,而是计算了小于10的数的计数(在under10中),然后除以总数得到百分比。

如果你仍然感到困惑,请告诉我:)

一个简洁的方法是:

# construct a list of all prices less than 10 pounds 
under_ten = [price for price in prices if price < 10]
print(len(under_ten) / len(prices) * 100)

这里我们使用"列表推导式">

你的答案是不正确的,因为你写的是number > 10而不是number < 10,但也要注意,你是通过for循环在每个循环中分配under10,这是不正确的,但你只需要在最后分配一次:

def percentageUnderTenPounds(prices):
under10 = 0
sum1 = 0
for number in prices: 
if number < 10:
sum1 += 1

under10 = (sum1 /len(prices)) * 100

return under10
if number < 10:
sum1 += 1

under10 = (sum1 /len(prices)) * 100

最新更新