一段代码的报错提示

环境:windows10,Python3.6
代码:
uh = input('Enter hours:')
try:
    if float(uh) > 0:
        hour = float(uh)
except:
    print('Error1, please enter numeric input.')
    quit()

ur = input('Enter rate:')
try:
    if float(ur) > 0:
        rate = float(ur)
except:
    print("Error2, please enter numeric input.")
    quit()

pay = hour * rate
print(pay)


该代码在输入数字和字符串的时候都能够正常运行,但是如果输入0或者负数,则不会出现错误提示,而是出现如下报错,请问下各位究竟是哪里出问题了?

请先 登录 后评论

6 个回答

舵手


环境:windows10,Python3.6
代码:
uh = input('Enter hours:')
try:
    if float(uh) > 0:
        hour = float(uh)
except:
    print('Error1, please enter numeric input.')
    quit()

ur = input('Enter rate:')
try:
    if float(ur) > 0:
        rate = float(ur)
except:
    print("Error2, please enter numeric input.")
    quit()

pay = hour * rate
print(pay)


该代码在输入数字和字符串的时候都能够正常运行,但是如果输入0或者负数,则不会出现错误提示,而是出现如下报错,请问下各位究竟是哪里出问题了?




请先 登录 后评论
泡泡鱼
显然,这是你代码本身逻辑的问题。
当你第一个输入,输入的是0,则if不执行。那么hour就不会被定义。
所以,错误就来了。错误提示翻译过来就是:hour还没有被定义。

请先 登录 后评论
安诺斯诺

显然,这是你代码本身逻辑的问题。
当你第一个输入,输入的是0,则if不执行。那么hour就不会被定义。
所以 ...

感谢回复。但是我理解在不执行if语句的情况下,就应该执行except里的语句,从而输出enter numeric input的提示呀?
请先 登录 后评论
檬娜

感谢回复。但是我理解在不执行if语句的情况下,就应该执行except里的语句,从而输出enter numeric input ...

except是,发生错误时执行,而不是else时执行。if判断没发生错误,所以不会执行except里面的句子。
except和try搭配,else和if搭配。你可以看看python基础教程中关于这两者的区别以及,两者相关的finally,elif,以及和try搭配的else。
请先 登录 后评论
桔沫

except是,发生错误时执行,而不是else时执行。if判断没发生错误,所以不会执行except里面的句子。
excep ...

明白了,非常感谢!
请先 登录 后评论
大耳朵狗

明白了,非常感谢!

不客气
请先 登录 后评论
  • 6 关注
  • 0 收藏,717 浏览
  • 千四儿 提出于 2021-02-28 12:18

相似问题