我应该先说一下,我几乎没有写过什么代码,也几乎没有写过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