尝试除错误检查

Try except bug check

我正在上某门在线课程,我已经用这段代码完成了作业,但我仍然可以通过某些输入引发错误,我不明白为什么。我问过课程导师(使用伪代码),他们说我的 try/except 语句有问题。

程序应该提示用户输入一个数字,一遍又一遍,return如果输入了非数字的东西就会出错,但字符串 'done,' 除外,在这种情况下它将 return 所有输入数字的最大值和最小值。

程序如下:

largest = None
smallest = None

while True:

    num = input("Enter a number: ")


    if num == 'done': break

    try:  
        float(num)

    except:
        print("Invalid input")
        continue

    if largest is None:
        largest = num
    elif largest < num:
        largest = num

    if smallest is None:
        smallest = num
    elif smallest > num:
        smallest = num

print("Maximum is", largest)
print("Minimum is", smallest)

如果您输入以下值作为输入 1 2 3 pk 27 -37 done,则输出为 Max: 3, Min -37.

这让我发疯。我知道为什么会这样。

您正在将输入转换为浮点数,但没有保留它以供以后检查。

所以稍后在 except 块之后,Python 正在进行字符串比较,并将字符串 "3" 与字符串 "27" 进行比较,因为 '3' 是 'larger' 比 '2' 它认为 "3" 大于“27”,很像 "b" 大于 "aaabbbbzzz".

要修复它,请更改此:

float(num)

对此:

num = float(num)