将for循环转换为while循环

时间:2014-03-05 18:11:16

标签: python python-3.x

我试图找出如何将for循环更改为此函数的while循环:

def sumIt():
    A=1
    number=int(input('Enter a number(integer):'))
    total=0.0
    for counter in range(number):
        total+=A
        A+=1
    print('The sum from 1 to the number is:',total)
    averageIt(total,number)

#average sum and number
def averageIt(total,number):
    print('The average of the sum and the number is:',(total+number)/2)

sumIt()
我会说:

while number>1:

3 个答案:

答案 0 :(得分:1)

您可以手动增加counter变量:

counter = 0
while counter < number:
    total += A
    A += 1
    counter += 1

或者您可以从counter开始递减number

counter = number
while counter:
    total += A
    A += 1
    counter -= 1

我们在布尔上下文中使用任何非零数字为True的事实; while循环将在counter到达0后结束。

您在此处使用counter而不是number,因为您仍需要稍后使用number averageIt()功能。

答案 1 :(得分:1)

您可以自己创建计数器:

number=int(input('Enter a number(integer):'))
total = 0.0
counter = 0
while counter < number:
    total += A
    A += 1
    counter += 17

for块仍然是更加Pythonic和可读的方式。还要尽量避免在没有验证/ try块的情况下转换用户输入的结果:如果他输入'abc',您的代码将引发异常ValueError,因为无法将abc转换为整数

答案 2 :(得分:0)

为什么甚至根本不使用循环?

而不是

for counter in range(number):
        total+=A
        A+=1

只需使用

total += (number*(number+1) / 2) - (A*(A-1)/2) # account for different starting values of A
A += number