2017-09-13 407 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。最大值不能同时是最小值。 (对于唯一的办法就是只有一个元组独特的号码,我们已经在开始的值设置为第一要素覆盖的话。)