尝试除错误检查
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)
我正在上某门在线课程,我已经用这段代码完成了作业,但我仍然可以通过某些输入引发错误,我不明白为什么。我问过课程导师(使用伪代码),他们说我的 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)