for循环块的等效while循环块

时间:2019-01-08 21:14:01

标签: python-3.x for-loop while-loop

我是一个新手,试图从Al Sweigart的用Python自动完成无聊的事情中学习python,然后我遇到了他的代码块,以回答一个数学问题:“所有的总和是多少?数字从0到100?”显然,这是高斯在他的老师想让他忙的时候遇到的一个问题。

Sweigart使用for循环和range()函数来获取答案:

total = 0
for num in range(101):
    total=total+num
print(total)

稍后,他指出:“实际上,您可以使用while循环执行与for循环相同的操作; for循环更为简洁。”

如何在while循环中呈现此语句?

我尝试将for替换为while,但收到错误消息:“未定义名称'num'。”我还尝试使用另一个论坛中的另一段代码来建立求和数学方程,但是完全迷失了。

print('Gauss was presented with a math problem: add up all the numbers from 0 to 100. What was the total?')
a=[1,2,3,4,5,...,100]
i=0
while i< len(a)-1:
    result=(a[i]+a[i+1])/2
    print(result)
    i +=1

然后,我尝试在一个方程式中设置i,该方程式将一直循环直到添加每个数字,但都卡住了。

print('Gauss was presented with a math problem: add up all the numbers from 0 to 100. What was the total?')
i=0
while i<101:
    i=i+1
    a=i

while语句是否太复杂以至于无法保证工作?

2 个答案:

答案 0 :(得分:1)

您的最后一个示例即将结束。

这种形式的for循环:

for x in range(N):
    # ...

可以用while循环代替,例如:

x = 0
while x < N:
    # ...
    x += 1  # equivalent to x = x + 1

只需确保其余代码保持不变!

答案 1 :(得分:0)

for循环更加简洁。注意,我们需要一个“计数器”变量,在本例中为i,带有while循环。并不是说我们不需要在for循环中使用它们,而是将它们很好地集成到了语法中,以使代码更简洁。

i = 0
total = 0
while i < 101:
    total += i
    i += 1
print(total)

Python的for循环语法也与foreach等效:

for eachItem in list:
# Do something