如何在数字列表中找到最小值和最大值

时间:2016-10-18 17:02:42

标签: python-2.7 while-loop numbers

我在课堂上遇到麻烦,我正在寻求帮助。我需要制作一个代码,它会反复询问数字,然后打印出列表中的最小值和最大值。我的老师说我们无论如何都可以做到这一点。

   num_list = []
   while True:
   num = raw_input("Enter a number: ")
   if num == "done" : break
   if num >= 0:
   num_list.append(num)
   print min(num_list)
   print max(num_list) 

这就是我到目前为止所要求的数字输入,当我输入完成后它会中断,但它会打印出来"完成"列表中的最小值和最大值。

1 个答案:

答案 0 :(得分:1)

在调用min / max。

之前,您需要将数字转换为整数或浮点类型
# under n >= 0:
num = int(num) # or num = float(num)
num_list.append(num)

所以工作代码的一个例子是:

num_list = []
while True:
   num = raw_input("Enter a number: ")
   if num == "done" :
       break
   try: # use a try except to verify user input is in fact a number
       num = int(num) + 0 # alternatively use float(num) if non integer numerical inputs will be used
       if num >= 0:
           num_list.append(num)
           print "min: ",min(num_list)
           print "max: ",max(num_list)
   except:
       print "invalid input"

每次迭代都不调用max / min:

num_list = []
_min, _max = None, None
while True:
    num = raw_input("Enter a number: ")
    if num == "done" :
        break
    try: # use a try except to verify user input is in fact a number
        num = int(num) # alternatively use float(num) if non integer numerical inputs will be used
        if num >= 0:
            if not _min or not _max:
                _min,_max = num, num
            elif num < _min:
                _min = num
            elif num > _max:
                _max = num

            num_list.append(num)

   except:
       print "invalid input"

   print "min:", _min
   print "max:", _max