我在这里得到了不同的最大值和最小值

2024-05-23 19:05:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

自定义输入如下所示:

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()

Tags: 用户inforlenifisvaluedef
3条回答

在每次迭代中,您都要与列表的第一个元素进行比较,即val(val=a[0]) 并且不更新val。 修改

代码

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



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

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

lge()
sml()

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

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_)

你的代码有问题吗

  • 为什么函数处于while循环中
  • 每次当你发现小的和大的时候,你只是在和第一个值进行比较

解决方案

下面是您代码中可能更改的最小答案

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



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

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

lge()
sml()

相关问题 更多 >