2015-07-04 272 views
5

我編寫了下面的代碼來獲取最大值和最小值作爲我的MOOC分配的一部分。這個程序不斷接受用戶的輸入,直到用戶鍵入'完成'。Python:用於獲取最大值和最小值而不使用最大值和最小值函數的程序

一旦完成鍵入,程序會給出最大值和最小值的結果。問題是最大值的結果總是正確的,但最小值的結果始終爲「無」。

largest = None 
smallest = None 
while (True) : 
    inp = raw_input('Enter a number: ') 
    if inp == 'done' : 
     break 
    try: 
     inp = float(inp) 
    except: 
     print 'Invalid input' 
    continue 
    if inp is None or inp > largest: 
     largest = inp 
    if inp is None or inp < smallest: 
     smallest = inp 
print largest, smallest 

回答

3

您發佈的代碼給出的最大和最小值都爲None。嘗試抓住後有一個繼續聲明,顯然它只是繼續輸入並且不會終止。繼續會告訴循環跳到下一次迭代。所以繼續必須進入除了塊(這可能是一個縮進錯誤)。其次,你將輸入與None進行比較。我想這是一個錯字的你,如果條件(它應該是「如果最大的是無」不是「如果INP是無」)

修改後的代碼:(檢查最後2如果條件):

largest = None 
smallest = None 
while (True) : 
    inp = raw_input('Enter a number: ') 
    if inp == 'done' : 
     break 
    try: 
     inp = float(inp) 
    except: 
     print 'Invalid input' 
     continue 
    if largest is None or inp > largest: 
     largest = inp 
    if smallest is None or inp < smallest: 
     smallest = inp 
print largest, smallest 
+3

你想要在except塊內的continue語句,否則誰知道什麼是inp(就像一個字符串!) – MasterOdin

+0

對不起,錯過了!謝謝! @MasterOdin – Quark

+0

除了block以外的用意是,如果用戶輸入的不是字符串或其他數據類型等數值以外的東西,而只是輸出Invalid Input並返回到開頭,因爲我們不需要任何其他數據類型。我完成了這項任務。非常感謝您的幫助。 –