2017-09-13 449 views
-4

我應該寫一個函數max_and_min,它接受一個包含整數元素的元組作爲參數並返回元組中的最大和最小整數。返回值應該是包含最大值和最小值的元組,按照該順序。Python的最大值和最小值

爲「正常」的方法,我想出了:

def max_and_min(values): 
    return (max(values), min(values)) 
    pass 

任何人都知道使用迭代拿出一個答案的方法是什麼?

+4

你問一個for循環? – Y0da

+0

你試過了什麼?這是一項任務嗎? – Lescurel

+3

你想要什麼? – Harsha

回答

0

如果你想找到最大/最小通過穿越/迭代 - 使用下面的方法:

def max_and_min(values): 
    max_v = min_v = values[0] 
    for v in values[1:]: 
     if v < min_v: 
      min_v = v 
     elif v > max_v: 
      max_v = v 

    return (max_v, min_v) 

l = [1,10,2,3,33] 
print(max_and_min(l)) 

輸出:

(33, 1) 
+1

我認爲不是提供複製解決方案,而是應該解釋解決方案,以便OP可以嘗試自己解決問題。這尤其適用於這樣的情況,問題顯然是基於家庭作業。 –

0

您的解決方案可以正常工作,但minmax方法都循環遍歷該元組以分別查找最小值和最大值。

我想你想要的是以下幾點:

  • 定義兩個變量:smallestbiggest兩者設爲元組的第一個元素
  • 遍歷元組(for number in values: ...
  • 比較每個值分別用當前的smallestbiggest分別使用「小於」<和「大於」>
  • 如果任一條件,則各自的可變設置爲當前元素(smallest = number

循環完成後,你將有變量smallest和填充有各自的min和max biggest

如果您想進一步優化它,請使用if ... else...而不是兩個if s。最大值不能同時是最小值。 (對於唯一的辦法就是隻有一個元組獨特的號碼,我們已經在開始的值設置爲第一要素覆蓋的話。)