except不起作用?

ccrfmcuu  于 2021-09-08  发布在  Java
关注(0)|答案(2)|浏览(514)

我一直在想为什么 try-except 语句工作正常,但被以下代码卡住了。
输入将是 Enter Hours: 10Enter 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

发生这种情况有什么解释?
eimct9ow

eimct9ow1#

在原始代码段中,您尝试将用户输入强制转换为立即浮动,即在 try 块这就抛出了一个 ValueError (如预期)但由于它在 try ,它不能像您期望的那样被捕获和处理。

ycggw6v2

ycggw6v22#

看起来您正在尝试将字符串“十”转换为浮点10.0。您不能这样做
你的代码是

sh = float(input("Enter Hours: "))

以字符串格式获取输入,然后将其转换为浮点值,然后将其存储在名为sh的变量中

sr = float(input("Enter Rate: "))

这也可以做同样的事情,但不是将其存储到sh,而是将其存储到sr
try块开始,它说如果发生任何错误,请执行此操作跳过所有内容并转到除块之外的其他位置

fh = float(sh)
    fr = float(sr)

由于无法将字符串转换为浮点,所以在try块中会出现错误,然后转到except块。

Traceback (most recent call last):
File "C:\Users~~~~", line 2, in <module>
sr = float(input("Enter Rate: "))
ValueError: could not convert string to float: 'ten'>

出现此错误的原因是您试图将第2行中的字符串转换为浮点,因为输入是字符串“十”

sh = input("Enter Hours: ")
sr = input("Enter Rate: ")

这是有效的,因为您不需要转换任何内容,只需要输入
然后把它转移到try块上,try块给出一个错误,然后转到expt块并 print("Error, please enter numeric input")

相关问题