尝试除了错误检查

时间:2015-12-29 04:16:05

标签: python break continue

我正在进行某个在线课程并且我已经使用此代码完成了作业,但我仍然可以通过某些输入引发错误,而且我无法理解为什么。我问过课程导师(使用伪代码),他们说我的try / except语句存在问题。

程序应该一次又一次地提示用户输入一个数字,如果输入非数字,则返回错误,但字符串“#done;'在这种情况下,它将返回所有输入数字的最大值和最小值。

这是程序:

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.

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

1 个答案:

答案 0 :(得分:3)

您正在将输入转换为浮点数,但不保留该值以供以后检查。

稍后在except块之后,Python正在进行字符串比较,并将字符串"3"与字符串"27"进行比较,因为'3'比{{1}更大'它认为'2'大于“"3"”,就像27大于"b"一样。

要解决此问题,请更改此信息:

"aaabbbbzzz"

到此:

float(num)