2016-04-25 52 views
0

創建一個不需要參數的函數。該功能要求用戶輸入一系列大於或等於零的數字,一次一個。用戶類型結束以指示不再有數字。該函數計算所有輸入值的總和。當用戶鍵入「結束」時添加用戶輸入的數字和中斷的循環

我應該可以用while循環和if語句來做到這一點。

我遇到的主要問題是我不知道如何讓「結束」實際上停止循環,而不是增加值。

def SumFunction(): 
"""Sum of all values entered""" 

number = 0 
while number >= 0 and number is not "end": 
    number = number + (float(input("Enter next number: "))) 
return number 

回答

0

這個程序是你想我猜:

def SumFunction(): 
    sum = 0 
    while(True): 
     x = input('Enter: ') 
     while x.lower()=='end': 
      return sum 
     while float(x) >= 0: 
      sum += float(x) 
      break 
     else: 
      print ("Wrong Number!") 

輸出:

>>> SumFunction() 
Enter: 1 
Enter: 2 
Enter: -1 
Wrong Number! 
Enter: end 
3.0 
>>> 

可以使用break在循環出去吧。您也可以使用return方法退出功能。當你離開某個功能時,你也離開了循環!

當且僅當循環正常退出(即沒有中斷)時,循環的else塊纔會運行。

+0

這並不符合作業的所有要求。 –

+0

@BurhanKhalid更正。謝謝。 :) – EbraHim

+0

謝謝Ebrahim。 Python 2中的raw_input函數是什麼?我正在學習如何使用python 3進行編碼,所以我不太熟悉那個功能。有沒有python 3替代品? – sluh

0

分手了環路成多個分立的步驟:

def SumFunction(): 
    """Sum of all values entered""" 
    number = 0 
    user_input = 1 
    while user_input >= 0: 
     user_input = input("Enter next number: ") 
     if user_input == 'end': 
      break 
     user_input = float(user_input) 
     number += max(user_input, 0) 
    return number 

這首先獲取用戶輸入並檢查它是否'end'。如果是,則程序跳出循環並返回運行總數number。如果不是,程序會將用戶輸入轉換爲數字並將其添加到number。如果數字爲0或負數,程序將不會向number添加任何內容,循環將停止。最後,返回結果number

+0

感謝您的回答。如果你所做的功能本該工作或者不工作,我不會這樣做,但是我得到了一些錯誤。我遇到了一開始就遇到的同樣類型的問題。我不知道該怎麼做,所以程序可以區分浮點數和「結束」的字符串值來終止。布爾漢用他的想法走在了正確的軌道上,但我仍然陷入困境。 – sluh

+0

@sluh - 對不起,請參閱編輯。 – TigerhawkT3

0

想想你的循環檢查:

「做到這一點,而數大於或等於0,這是不是「end'`

哪個值。滿足這兩個條件。如果我進入'end'那麼它滿足這兩個條件;。因爲如果這兩個條件都滿足你的循環只會打破

所以,你真的想or不是and

一旦你解決這個問題,你會碰到一個問題:

>>> def sum_function(): 
...  number = 0 
...  while number >= 0 or number is not 'end': 
...   number = number + float(input('Enter a number: ')) 
...  return number 
... 
>>> sum_function() 
Enter a number: 1 
Enter a number: 3 
Enter a number: end 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<stdin>", line 4, in sum_function 
ValueError: could not convert string to float: end 

這裏的問題是,你的一切轉化到它進入後立即浮動;所以只要有人輸入'end',程序就會崩潰,因爲它不能將'end'轉換爲浮點數。

試圖解決一個自己:-)

0

你可以使用一個嘗試捕捉,如果有Value Error當你正在尋找一些他們可能輸入端,非越少,你可以做apropriate檢查在除了塊之外。

相關問題