2014-04-20 24 views
-8

我是Python新手。我只寫了一個簡單的函數,通過使用2個變量來查找輸入數字中最大的數字。通過在Python 2中使用2個變量來找到N個最小值的最佳算法是什麼?

def find_greatest(): 
    m = 0 
    while(True): 
     n = raw_input('Enter number: ') 
     n = float(n) 
     if (n>=m): 
      m = n 
      greatest = n 
     elif (n==-1): 
      print('Greatest number is ' + str(greatest)) 
      break 

我不想使用列表或詞典。現在我想要的只是通過在上面的代碼中進行一些更改來使用2個變量來查找最小的數字。

+4

您的代碼找到最大值,並且想要將其更改爲找到最小值;你認爲你可能需要改變什麼? –

+0

@OliCharlesworth簡單的條件即((n <= m))我相信。我做到了,但無法做到。 –

+0

您能否正確縮進您的代碼,以便我們可以輕鬆讀取它? – s16h

回答

0

這通常不是做你想做的事情的一個好辦法,但爲什麼只改變n >= mn <= m將無法​​正常工作的原因是因爲n == -1檢查必須是在if語句中的第一次檢查。

如果你堅持做這種方式,嘗試這樣的事情:

def find_smallest(): 
    smallest = None 
    while(True): 
     n = raw_input('Enter number: ') 
     try: 
      n = float(n) 
     except ValueError: 
      print 'Enter a valid positive number.' 
      continue 

     if (n == -1.0): 
      if smallest is None: 
       print('Cannot find smallest. No numbers were entered.') 
      else: 
       print('Smallest number is {}'.format(smallest)) 
       break 

     if n < 0: 
      print('Enter a positive number.') 
      continue 
     else: 
      smallest = n 
0

也許是這樣的:

def foo(): 
    m = 0 
    n = 0 
    Input = raw_input('Enter numbers:\n') 
    numbers = Input.split(",") 
    n, m = float(numbers[0]), float(numbers[1]) 
    if n > m: 
     return n 
    elif m > n: 
     return m 
    else m == n: 
     print "Numbers are equal\n" 

更清晰的代碼。 因此,對於最低數量,您只需要反向比較運算符

相關問題