2016-02-12 83 views
0

我是Python新手(或任何編碼),需要返回用戶輸入的數組中的最大值和最小值。我可以得到它返回最大的沒有問題,但最小給我回<unknown>消息。任何人都可以幫我修復我的最小回報代碼嗎?謝謝。Python - 從用戶輸入的數組中返回最小值和最大值

這裏是我的代碼:

maximum = None 
minimum = None 

while True: 
    #enter the input 
    inp = raw_input("Enter a number:") 

    #handle the edge cases 
    if inp == "done" : 
     break 
    if len(inp) < 1 : 
    break 

    #only accept good input 
    try: 
     num = int(inp) 
     #print num 
    except: 
     print "Invalid input" 
     continue 

    #do the work 
    if num > maximum : 
     max = num 
    if num < minimum : 
     min = num 
    else: 
     num 

print "Maximum is", max 
print "Minimum is", min 
+2

沒有數小於'None',所以'min = num'行永遠不會運行。 –

+1

但min給我留言< - 這是一個私人信息,或我們可以看到錯誤? – timgeb

+0

@timgeb這是因爲'min'是一個內置的,所以它打印。 –

回答

1

嘗試初始化minimummaximum電話號碼,並沒有None

比較爲INT值,在這裏,你正在做的strings

-1

儘量把所有輸入的數字爲INT列表(陣列),然後使用內置的MIN()和MAX()函數...

from __future__ import print_function 

nums = [] 

while True: 
    #enter the input 
    inp = input("Enter a number:") 

    #handle the edge cases 
    if inp == "done" or not len(inp): 
     break 

    #only accept good input 
    try: 
     nums.append(int(inp)) 
    except ValueError: 
     print("Invalid input") 
     continue 

print("Maximum is", max(nums)) 
print("Minimum is", min(nums)) 
1

您可以採取兩種方法,在這裏。首先,您可以在代碼中明確檢查None。第二,如@minatverma所述,將初始化您的最小/最大值爲一些「無法達到」值。

選項1:

替換此代碼...

#do the work 
if num > maximum : 
    max = num 
if num < minimum : 
    min = num 
else: 
    num 

有了這個代碼:

#do the work 
if minimum is None: 
    # First time, only 
    minimum = num 
    maximum = num 
elif num > maximum: 
    maximum = num 
elif num < minimum: 
    minimum = num 

選項2:

您需要添加fol在你的代碼的頂部降脂行:

import math 

然後,將這段代碼:

maximum = None 
minimum = None 

有了這個:

maximum = -math.inf 
minimum = math.inf 

你的代碼的其餘部分可以保持不變。

相關問題