[英]how to change for loop to while loop
我試圖讓這個while循環給出與for循環相同的output,但是,它是無限遞歸的,而不是在最大平均高度處停止。
代碼如下所示:
import numpy as np
N = 5
h = np.zeros(N) # heights of family members (in meter)
h[0] = 1.60; h[1] = 1.85; h[2] = 1.75; h[3] = 1.80; h[4] = 0.50
sum = 0
i = 0
while i < 5:
sum = sum + h[i]
average = sum/n
print('average height: {:g} meter'.format(average))
這是我試圖獲得 while 循環的 for 循環:
for i in [0, 1, 2, 3, 4]:
sum = sum + h[i]
average = sum/N
print(’Average height: {:g} meter’.format(average))
我在哪里 go 錯了?
預期 output:
average height 0.64 meter
average height 1.01 meter
average height 1.36 meter
average height 1.72 meter
average height 1.82 meter
看起來您正在嘗試計算運行平均值,並在 go 時打印當前值。 為此,您不需要 numpy... 還是您?
只需定義一個包含您的身高的列表。 然后遍歷它。
heights = [1.6, 1.85, 1.75, 1.80, 0.5]
running_sum = 0.0
running_average = 0.0
for height in heights:
running_sum += height
running_average = running_sum / len(heights)
print('Current average height: {:g} meter'.format(running_average))
看起來家庭平均身高的最終值為 1.5,而不是真正的 1.82,正如您預期的 output 所說。 可以使用WolframAlpha進行驗證。 我們似乎還有另一個問題。 到目前為止,您的運行平均值每次除以總長度 (5),我們應該除以迄今為止的長度。 這就是您可能想要使用 numpy 的東西。 為此,請參閱有關運行平均值的這個問題。
下面的舊答案:
記得增加計數器i
:
請記住, sum
已經在 Python 中定義。 所以我把它的名字改成了s
,並將操作s = s + h[i]
折疊成s += h[i]
i = 0
while i < 5:
s += h[i]
average = sum/n
print('average height: {:g} meter'.format(average))
i+=1
Martin Kleiven 的回答確實解決了重復問題,但它給出了一個錯誤。 這是正確的答案:
記得增加計數器i
:
import numpy as np
N = 5
h = np.zeros(N) # heights of family members (in meter)
h[0] = 1.60; h[1] = 1.85; h[2] = 1.75; h[3] = 1.80; h[4] = 0.50
s = 0
i = 0
while i < 5:
s = s + h[i] # by the way, sum is already defined in python, so change the variable name.
average = s/N # Change it to n => N
print('average height: {:g} meter'.format(average))
i += 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.