[英]finding smallest number in list for python
我正在嘗試使用for循環來獲取python中每周和每月的平均值:
sum = 0
sumA = 0
sumB = 0
sumC = 0
sumD = 0
week1 = (35,38,30,34,27,40,39)
week2 = (35,38,30,34,27,40,39)
week3 = (35,38,30,34,27,40,39)
week4 = (35,38,30,34,27,40,39)
for x in (week1):
sum = sum + week1[x]
avg1 = (sum + week1[x]) / 7
for y in (week2):
sumA = sumA + week2[y]
avg2 = (sumA + week2[y]) / 7
for z in (week3):
sumB = sumB + week3[z]
avg3 = (sumB + week3[z]) / 7
for k in (week4):
sumC = sumC + week4[k]
avg4 = (sumC + week4[k]) / 7
sumD = sum + sumA + sumB + sumC
avg = (sum + sumA + sumB + sumC) / 28
就是這樣,但這是不正確的。 我可以幫忙嗎
假設您使用的是Python 2.x,則兩個整數的/
運算符使用整數除法,即除法的結果四舍五入為下一個整數。 在交互式解釋器中嘗試:
>>> 5/3
1
要獲得正確的浮點除法,可以使用
from __future__ import division
或將其中一個操作數轉換為float
avg = float(sum + sumA + sumB + sumC) / 28
您不需要這些循環。 這是一個簡單的示例:
>>> week1 = (35,38,30,34,27,40,39)
>>> average1 = sum(week1) / len(week1)
>>> average1
34
如評論中所示:
上面的示例(在Python 2.x中)如果需要“真”除法(例如34.71),則需要將一部分強制轉換為浮點數。
在Python 3.x中單/
除法默認為“真”分裂所以上面的片段將是正確的(盡管具有用於不同結果值average1
)。
這里有幾個問題。 首先, for x in lst
產生元素lst
,而不是索引。 其次,將元素添加兩次,一次是在更新sum
,一次是在更新avg
。 只需計算列表之外的avg
。 第三,用float
代替int
來防止截斷:
for x in (week1):
sum = sum + x
avg1 = sum / 7.
list = [....]
avg = sum(list)/float(len(list))
>>> def ave(numbers):
... return sum(numbers) / len(numbers)
...
>>> week1 = (35,38,30,34,27,40,39)
>>> week2 = (35,38,30,34,27,40,39)
>>> week3 = (35,38,30,34,27,40,39)
>>> week4 = (35,38,30,34,27,40,39)
>>> ave(week1)
34
>>> ave(week1+week2+week3+week4)
34
>>>
from __future__ import division
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.