Python 2.7 如何在数字列表中查找最小值和最大值

Python 2.7 如何在数字列表中查找最小值和最大值,python-2.7,while-loop,numbers,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) pri

我在课堂上的一个项目上遇到了麻烦,我正在寻求帮助。我需要做一个代码,它会重复要求数字,然后打印出列表中的最小值和最大值。我的老师说我们可以随心所欲地做这件事

   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) 

这就是我目前所拥有的,它要求输入数字,当我输入done时会中断,但它只会打印列表中最小值和最大值的done。

在调用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

为什么要添加0并不断调用min和max?我添加0是为了验证num实际上是一个数值,并将其删除。使用了一个_min,_max引用,而不是重复调用min/max函数,你是对的,这样效率更高。我的意思是,当循环结束固定缩进时,应该打印最小值和最大值。不可能知道循环内外是什么。