2014-03-05 75 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想用循環來訓練。 –