我一直在想为什么 try-except
语句工作正常,但被以下代码卡住了。
输入将是 Enter Hours: 10
及 Enter Rate: ten
```
sh = float(input("Enter Hours: "))
sr = float(input("Enter Rate: "))
try:
fh = float(sh)
fr = float(sr) # string rate
except:
print("Error, please enter numeric input")
quit()
print(fh, fr, sep='')
sp = fh * fr
print("Pay: ", round(sp, 2))
代码给了我一个 `Traceback` 详情如下:
Traceback (most recent call last):
File "C:\Users~~~~", line 2, in
sr = float(input("Enter Rate: "))
ValueError: could not convert string to float: 'ten'
但是,如果我将前两行更改为。。。
sh = input("Enter Hours: ")
sr = input("Enter Rate: ")
然后代码突然开始正常工作,结果如下:
Enter Hours: 10
Enter Rate: ten
Error, please enter numeric input
发生这种情况有什么解释?
2条答案
按热度按时间eimct9ow1#
在原始代码段中,您尝试将用户输入强制转换为立即浮动,即在
try
块这就抛出了一个ValueError
(如预期)但由于它在try
,它不能像您期望的那样被捕获和处理。ycggw6v22#
看起来您正在尝试将字符串“十”转换为浮点10.0。您不能这样做
你的代码是
以字符串格式获取输入,然后将其转换为浮点值,然后将其存储在名为sh的变量中
这也可以做同样的事情,但不是将其存储到sh,而是将其存储到sr
try块开始,它说如果发生任何错误,请执行此操作跳过所有内容并转到除块之外的其他位置
由于无法将字符串转换为浮点,所以在try块中会出现错误,然后转到except块。
出现此错误的原因是您试图将第2行中的字符串转换为浮点,因为输入是字符串“十”
这是有效的,因为您不需要转换任何内容,只需要输入
然后把它转移到try块上,try块给出一个错误,然后转到expt块并
print("Error, please enter numeric input")