【问题标题】:Why does the try-except not work when the variable input is given as a float?当变量输入作为浮点数给出时,为什么 try-except 不起作用?
【发布时间】:2021-07-10 07:18:01
【问题描述】:

我一直在试图弄清楚为什么 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 <module>
    sr = float(input("Enter Rate: "))
ValueError: could not convert string to float: 'ten'

但是,如果我将前 2 行更改为 ...

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

然后代码突然开始正常工作,结果如下:

Enter Hours: 10
Enter Rate: ten
Error, please enter numeric input

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

【问题讨论】:

    标签: python try-except


    【解决方案1】:

    在原始代码 sn-p 中,您尝试将用户输入转换为 立即,即在 try 块之外。这会抛出 ValueError(如预期的那样),但由于它在 try 之前这样做,因此无法按预期捕获和处理。

    【讨论】:

      【解决方案2】:

      您似乎正在尝试将字符串“十”转换为浮点数 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 块上对其进行转换,然后转到 excpt 块并 print("Error, please enter numeric input")

      【讨论】:

        猜你喜欢
        • 2023-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-10
        • 1970-01-01
        • 2020-06-25
        相关资源
        最近更新 更多