当变量输入作为浮点数给出时,为什么 try-except 不起作用?
Why does the try-except not work when the variable input is given as a float?
我一直在努力弄清楚为什么 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 <module>
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
发生这种情况有什么解释?
在原始代码片段中,您尝试将用户输入立即转换为浮动,即在 try
块之外。这会抛出 ValueError
(如预期的那样),但由于它在 try
之前抛出,因此无法按预期捕获和处理。
您似乎在尝试将字符串 'ten' 转换为浮点数 10.0
你不能那样做
您的密码是
sh = float(input("Enter Hours: "))
以字符串格式输入,然后将其转换为浮点值,然后将其存储在名为 sh
的变量中
sr = float(input("Enter Rate: "))
这也做同样的事情,但不是将它存储到 sh,而是将它存储到 sr
try 块开始
它说
如果发生任何错误,请执行此操作跳过所有内容并转到 except 块
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 行将字符串转换为浮点数,因为输入是 'ten',这是一个字符串
sh = input("Enter Hours: ")
sr = input("Enter Rate: ")
这是有效的,因为你没有转换任何东西只是接受输入
并在 try 块上转换它,它给出了一个错误,然后转到 excpt 块并
print("Error, please enter numeric input")
我一直在努力弄清楚为什么 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 <module>
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
发生这种情况有什么解释?
在原始代码片段中,您尝试将用户输入立即转换为浮动,即在 try
块之外。这会抛出 ValueError
(如预期的那样),但由于它在 try
之前抛出,因此无法按预期捕获和处理。
您似乎在尝试将字符串 'ten' 转换为浮点数 10.0 你不能那样做
您的密码是
sh = float(input("Enter Hours: "))
以字符串格式输入,然后将其转换为浮点值,然后将其存储在名为 sh
的变量中sr = float(input("Enter Rate: "))
这也做同样的事情,但不是将它存储到 sh,而是将它存储到 sr
try 块开始 它说 如果发生任何错误,请执行此操作跳过所有内容并转到 except 块
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 行将字符串转换为浮点数,因为输入是 'ten',这是一个字符串
sh = input("Enter Hours: ")
sr = input("Enter Rate: ")
这是有效的,因为你没有转换任何东西只是接受输入
并在 try 块上转换它,它给出了一个错误,然后转到 excpt 块并
print("Error, please enter numeric input")