2013-07-29 33 views
0

我在MyPytutor上有一些作業問題,它要求我編寫一個函數sum_from_to(start,end),它使用while循環來計算從開始到結束的整數,但不包括結束。使用while循環來計算兩個數字的整數之和

給定的代碼是:

def sum_from_to(start, end): 
"""Return the sum of the integers from start up to but not including end. 

sum_from_to(int, int) -> int 
""" 
# add your code here: use a while loop 

實例:

  • sum_from_to(3,7)的值應該爲18(即3 + 4 + 5 + 6)。
  • sum_from_to(3,3)的值應該爲0。

我將如何處理這?我在半年前見過這個相同的問題,但它從未解決。任何幫助將不勝感激,因爲我真的堅持這一點!

+2

homewor K + – LarsVegas

+0

你*有*使用循環?有一個簡單的數學解決方案,根本不涉及任何循環,只是一個簡單的表達式。 –

+1

請注意,使用while(或for)循環對於除了微不足道的情況以外的其他所有情況都是不必要的慢,因爲有一個從1到n的和的公式:'n(n + 1)/ 2'。要查找從開始到結束1的總和,只需計算兩種情況:從1到結束1的總和和從1到開始-1的總和,然後從前一個減去後一個。 –

回答

2

這裏有一些例子,讓你開始

a = 0 
while a < 10: 
    a += 1 
    print a 

你也許可以用

sum(range(start, end)) 
3

做初始化之間[開始,結束while循環[(與最終排除了這種跡象: 「<」) 然後迭代起始號碼。 因此,對於3〜7的數字爲:3,4,5,6 然後你只需要添加這個號碼,所以只是初始化一個變種befor while循環,並與數添加此變種你迭代

def sum_from_to(start, end): 
    """Return the sum of the integers from start up to but not including end. 

    sum_from_to(int, int) -> int 
    """ 
    result = 0 
    i = start 
    while i < end: 
     result += i 
     i += 1 
    return result 
+0

您可以請擴展爲什麼/如何解決方案回答這個問題? –

0

我倒是傳遞這樣的:

def sum_from_to(start, end): 
    ret = 0 
    while start < end: 
     ret += start 
     start += 1 
    return ret 

但我喜歡它看起來如下(不同時 - 這不符合您的要求)的方式:您是希望我們做你的

def sum_from_to(start, end): 
    return sum(x for x in range(start, end))