簡體   English   中英

如何將for循環更改為while循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM