2014-03-05 241 views
0

我试图找出如何改变一个for循环到while循环这个功能:转换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: 

回答

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 

在这里我们使用的事实,任何非零数字是在布尔环境真;一旦counter达到0while循环将结束。

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

1

您可以自己创建计数器:

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

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

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 
+0

好...如果你想在OP代码更漂亮,只是'和总结(范围(数))'但是我认为OP想用循环来训练。 –