【问题标题】:finding min and max in python在python中找到最小值和最大值
【发布时间】:2020-11-18 17:50:06
【问题描述】:

编写一个程序,反复提示用户输入整数,直到用户输入“完成”。输入“完成”后,打印出 最大和最小的数字。如果用户输入任何其他内容 比一个有效的数字用 try/except 捕获它并输出一个 适当的消息并忽略它。

这是我尝试了很多方法但无法达到最小和最大数字的问题。请帮我写代码:

largest = None
samllest = None
while True:
    num = input("Enter Numbers:")
    if num == 'done' :
        break
    else:
        try:
            n = int(num)
        except:
            print("Invalid Input")

【问题讨论】:

  • 您似乎在接受和处理输入方面做得很好。这里有一个想法:将所有这些数字放在一个列表中,当用户输入done时,使用内置的minmax返回相关数字
  • 是的,我教过如何使用列表,但对于该用户,最初需要提及列表大小,但我不希望这样。有没有其他办法。
  • 他们为什么需要这样做?这不是 C... 你不熟悉 list.append() 方法 - 将 x 附加到序列的 end

标签: python python-3.x


【解决方案1】:

使用海象运算符既有趣又简洁:

numbers = list()
while (the_input := input('Enter a number:')) != 'done':
    numbers.append(int(the_input))
print(f'{min(numbers)=}, {max(numbers)=}')

【讨论】:

    【解决方案2】:

    你可以做一个输入数字的列表:

    numbers=[]
    while True:
        num = input("Enter Numbers:")
        if num == 'done' :
            break
        else:
            try:
                numbers.append(int(num))
            except:
                print("Invalid Input")
    print("Min", str(min(numbers)))
    print("Max", str(max(numbers)))
    

    你会得到这样的结果:

    Enter Numbers:2
    Enter Numbers:3
    Enter Numbers:4
    Enter Numbers:5
    Enter Numbers:6
    Enter Numbers:7
    Enter Numbers:8
    Enter Numbers:done
    Min 2
    Max 8
    

    【讨论】:

    • 无需将print 参数转换为str - 它是自动完成的
    • 是的,你的权利。我有这种狂热来投射所有元素。
    【解决方案3】:

    给你,试探一下:

    lg = None
    sm = None
    s = None
    
    while s != 'done':
        s = input("Enter numbers:")
        if s.isdigit():
            s = int(s)
            if lg == None and sm == None:
                lg = s
                sm = s
                
            if lg <= s:
                lg = s
            if sm >= s:
                sm = s
                
    print(f"Min: {sm}, Max: {lg}")
    

    你可以测试一下:

    Enter numbers:5
    Enter numbers:6
    Enter numbers:1
    Enter numbers:5
    Enter numbers:8
    Enter numbers:9
    Enter numbers:done
    Min: 1, Max: 9
    

    如果你想要一个 try/except 块...

    lg = None
    sm = None
    s = None
    
    while s != 'done':
        try:
            s = int(input("Enter numbers:"))
            if lg == None and sm == None:
                lg = s
                sm = s
                
            if lg <= s:
                lg = s
            if sm >= s:
                sm = s
                
        except Exception as e:
            print(e)
            
    print(f"Min: {sm}, Max: {lg}")
    

    【讨论】:

    • 没问题,很高兴为您提供帮助;)。请考虑将其标记为正确答案。
    猜你喜欢
    • 2023-01-05
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多