2015-07-10 26 views
1
small = None 
larg = None 
count = 0 

while True: 
    inp = raw_input("Enter a number: ") 
    if inp == "done" : break 

    try: 
     num = float (inp) 

    except: 
     print "Invalid number" 

    if num < small: 
     small = num 

print "Done" 
print small 

此代碼應讓用戶添加數字,直到他/她的類型「完成」,然後找到最小的數(我的想法是用小的每次比較NUM並打印最後一個很小的值的最小值完成後)查找輸入數字

但是當我運行它時,它始終顯示None爲最小值。

+1

也許最好讓用戶鍵入所有數字,然後顯示最小? –

回答

2

在Python 2.x中,None比所有的數字越小,因此,自開始編號爲None,它總是最小。

你可以把一個檢查,如果小是None用輸入初始化(這應該設置你的small爲第一個輸入的數字)。

示例 -

small = None 
larg = None 
count = 0 

while True: 
    inp = raw_input("Enter a number: ") 
    if inp == "done" : break 

    try: 
     num = float (inp) 

    except: 
     print "Invalid number" 

    if small is None or num < small: 
     small = num 

print "Done" 
print small 
+0

哇那麼容易,快:D Thaaanks :) – Solo

0

您最初不能首先將small設爲None。否則你的國家內容

if num < small: 

每次都會評估爲False。因爲您將None值與浮點值進行比較,並且None小於每個數字。做這樣的事情

if small is None or num < small: 
    small = num 
+0

如果用戶輸入大於9999999的所有數字,該怎麼辦? –

+0

已編輯答案 –

+0

是的,謝謝,讓一些代碼更小的優勢:D – Solo

0

我可以建議這樣的事情

input_list = [] 

while True: 
    inp = raw_input("Enter a number: ") 
    if inp == "done" : break 

    try: 
     input_list.append(float(inp)) 
    except: 
     print "Invalid number" 
     continue 

    smalest = min(input_list[-2:]) 
    print smalest 

    input_list.append(input_list.pop(input_list.index(smalest))) 

print "Done" 
0

這是做的相當簡單的方式。我沒有嘗試通過在提示符中輸入亂碼來打破它,但我認爲它工作正常。

numbers = [] 

def asking(): 
    while True: 
     number = raw_input("Enter a number:") 
     if number == "stop": 
      break 
     try: 
      number = float(number) 
      numbers.append(number) 
     except: 
      print "Try again." 
      continue 

    return min(numbers) 

print asking()