首页 > 解决方案 > 我在这里得到不同的最大值和最小值

问题描述

这是一个反复提示用户输入整数直到用户输入“完成”的程序。一旦输入“完成”,它就会打印出最大和最小的数字。

自定义输入如下:

7
2
11
flip
10
4
done

输出:

输入无效

最大值为 10

最小值为 4

预期输出:

输入无效

最大值为 11

最小值为 2

a=list()
while True:
    sval=input()
    if sval == "done":
        break    
    try:
        value=int(sval)
        a.append(value) 
    except:
        print("Invlid")
        continue



    def sml():
        val=a[0]
        for i in range(len(a)):
            if a[i]<val:
                smalles=a[i]
        print("Minimum is",smalles)

    def lge():
        val=a[0]
        for i in range(len(a)):
            if a[i]>val:
                larges=a[i]
        print("Maximum is",larges)

lge()
sml()

标签: pythonpython-3.xlist

解决方案


而不是在追加到数组之后找到最大值和最小值,您可以在之前找到它。这将减少每次迭代数组以找到最大值和最小值的成本。

a=list()
max_, min_ = float('-inf'), float('inf')
while True:
    sval=input()
    if sval == "done":
        break
    try:
        value = int(sval)
        if value > max_:
            max_ = value
        elif value < min_:
            min_ = value
        a.append(value)
    except:
        print("Invalid")
        continue

print("Maximum is", max_)
print("Minimum is", min_)

推荐阅读