我在使用python排列None和输入数据以查找最大值和最小值时遇到问题

2024-04-25 06:16:51 发布

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

编辑:以下是测试值(7、2、bob、10和4)和所需输出

无效输入 最大值为10 最小值为2 对于需要它们的人:)

你好!!所以我遇到了一个问题,我必须从用户那里获取输入,然后当类型完成时,最大值和最小值就会出来。有一小部分,如果你把错误的数据,它会告诉你,但我得到了完美的“完成”。但我必须决定最大和最小的部分是我的问题。我为每个值设置了Nonetype,但当我把它放在if语句中时,它只是选择第一个输入作为最大值。我在下面附上了我的代码。任何修改都会有所帮助。多谢各位

Largest = None
Smallest = None
while True :
    num = input("Enter a number: ")
    if num == "done" :
        break
    try :
        fnum = int(num)
    except :
        print("Invalid input")
        continue
    if Largest is None:
        Largest = fnum
    elif Smallest is None:
        Smallest = fnum
    elif fnum > Largest:
        fnum = Largest
    elif fnum < Smallest:
        fnum = Smallest
print("Maximum is",Largest)
print("Minimum is",Smallest)

Tags: 用户none编辑类型inputifis错误
3条回答

理想情况下,您可以使用==(等于)来比较None

x = None
y = None
print(x is y)
print(x==y)

印刷品

True
True

现在,所有的条件都是ifelif,因此在第一次迭代中,每次都分配最大的条件(因为这是第一个真条件),在第二次迭代中分配最小的条件(因为这是第二个真条件),并且这种逻辑可能并不总是这样

您可以做的是,同时设置最大值和最小值,即在比较之前具有相同的参考点

最后,您不是在更新最小的和最大的,而是反向更新(如注释中所指出的)

把它缝合在一起

Largest = None
Smallest = None
while True :
    num = input("Enter a number: ")
    if num == "done" :
        break
    try :
        fnum = int(num)
    except :
        print("Invalid input")
        continue
    if Largest == None or Smallest == None:
        Largest = fnum
        Smallest = fnum
    elif fnum > Largest:
        Largest = fnum
    elif fnum < Smallest:
        Smallest = fnum
print("Maximum is",Largest)
print("Minimum is",Smallest)

有很多方法可以做到这一点。您应该尝试使用数组。 首先,创建一个存储所有数字的数组。如果用户键入“done”,则将数组的最大数和最小数存储在两个变量中。真的很简单

numbers = []

while True :
    num = input("Enter a number: ")
    if num == "done" :
        break
    try:
        num = int(num)
        numbers.append(num)

    except:
        print("Invalid input")
        continue

Largest = max(numbers)
Smallest = min(numbers)

print("Maximum is", Largest)
print("Minimum is", Smallest)

如果希望将最大值和最小值保留为None,可以执行条件表达式来分配值。这将导致将第一个值同时指定给最大值和最小值,如果值较大或较小,则仅指定给最大值中的最小值

这不是实现这一点的最佳方式,但它可以完成任务

Largest = None
Smallest = None
while True :
    num = input("Enter a number: ")
    if num == "done" :
        break
    try :
        fnum = int(num)
    except :
        print("Invalid input")
        continue
    Largest = fnum if Largest is None else fnum if fnum > Largest else Largest
    Smallest = fnum if Smallest is None else fnum if fnum < Smallest else Smallest

print("Maximum is", Largest)
print("Minimum is", Smallest)

以单个数字输出

enter image description here

输出你的数字

enter image description here

相关问题 更多 >