Python - 返回由用户输入的数组的最小值和最大值

时间:2016-02-12 22:21:17

标签: python max min

我是Python(或任何编码)的新手,需要从用户输入的数组中返回最大值和最小值。我可以让它返回最大没问题,但是min给了我<unknown>消息。任何人都可以帮我修复我的最小回报代码吗?感谢。

这是我的代码:

maximum = None
minimum = None

while True:
    #enter the input
    inp = raw_input("Enter a number:")

    #handle the edge cases
    if inp == "done" : 
        break
    if len(inp) < 1 : 
    break

    #only accept good input
    try: 
        num = int(inp)
        #print num
    except:
        print "Invalid input"
        continue

    #do the work
    if num > maximum :
        max = num
    if num < minimum :
        min = num
    else:
        num

print "Maximum is", max
print "Minimum is", min

3 个答案:

答案 0 :(得分:1)

尝试将minimummaximum初始化为数字,而不是None

作为INT值进行比较,此处您正在执行strings

答案 1 :(得分:1)

您可以采取两种方法。首先,您可以在代码中明确检查None。正如@minatverma所提到的,第二个是将你的最小/最大值初始化为某些“无法达到”值。

选项1:

替换此代码......

#do the work
if num > maximum :
    max = num
if num < minimum :
    min = num
else:
    num

使用此代码:

#do the work
if minimum is None:
    # First time, only
    minimum = num
    maximum = num
elif num > maximum:
    maximum = num
elif num < minimum:
    minimum = num

选项2:

您需要在代码顶部添加以下行:

import math

然后,替换此代码:

maximum = None
minimum = None

有了这个:

maximum = -math.inf
minimum = math.inf

其余代码可以保持不变。

答案 2 :(得分:-1)

尝试将所有输入的数字放入INT列表(数组),然后使用内置的min()和max()函数......

from __future__ import print_function

nums = []

while True:
    #enter the input
    inp = input("Enter a number:")

    #handle the edge cases
    if inp == "done" or not len(inp): 
        break

    #only accept good input
    try: 
        nums.append(int(inp))
    except ValueError:
        print("Invalid input")
        continue

print("Maximum is", max(nums))
print("Minimum is", min(nums))