我正在进行某个在线课程并且我已经使用此代码完成了作业,但我仍然可以通过某些输入引发错误,而且我无法理解为什么。我问过课程导师(使用伪代码),他们说我的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.
答案 0 :(得分:3)
您正在将输入转换为浮点数,但不保留该值以供以后检查。
稍后在except块之后,Python正在进行字符串比较,并将字符串"3"
与字符串"27"
进行比较,因为'3'
比{{1}更大'它认为'2'
大于“"3"
”,就像27
大于"b"
一样。
要解决此问题,请更改此信息:
"aaabbbbzzz"
到此:
float(num)