找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2790|回复: 5

[已解决] 一段代码的报错提示

1

主题

3

帖子

3

积分

贫民

积分
3
caithreecows 发表于 2017-12-18 16:52:01 | 显示全部楼层 |阅读模式
本帖最后由 caithreecows 于 2017-12-18 18:12 编辑

环境: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或者负数,则不会出现错误提示,而是出现如下报错,请问下各位究竟是哪里出问题了?

报错提示:
微信图片_20171218164358.png


回复

使用道具 举报

7

主题

33

帖子

33

积分

贫民

积分
33
bigpang 发表于 2017-12-18 17:29:25 | 显示全部楼层
显然,这是你代码本身逻辑的问题。
当你第一个输入,输入的是0,则if不执行。那么hour就不会被定义。
所以,错误就来了。错误提示翻译过来就是:hour还没有被定义。

回复 支持 反对

使用道具 举报

1

主题

3

帖子

3

积分

贫民

积分
3
caithreecows  楼主| 发表于 2017-12-18 17:50:50 | 显示全部楼层
bigpang 发表于 2017-12-18 17:29
显然,这是你代码本身逻辑的问题。
当你第一个输入,输入的是0,则if不执行。那么hour就不会被定义。
所以 ...

感谢回复。但是我理解在不执行if语句的情况下,就应该执行except里的语句,从而输出enter numeric input的提示呀?
回复 支持 反对

使用道具 举报

7

主题

33

帖子

33

积分

贫民

积分
33
bigpang 发表于 2017-12-18 17:56:26 | 显示全部楼层
caithreecows 发表于 2017-12-18 17:50
感谢回复。但是我理解在不执行if语句的情况下,就应该执行except里的语句,从而输出enter numeric input ...

except是,发生错误时执行,而不是else时执行。if判断没发生错误,所以不会执行except里面的句子。
except和try搭配,else和if搭配。你可以看看python基础教程中关于这两者的区别以及,两者相关的finally,elif,以及和try搭配的else。
回复 支持 反对

使用道具 举报

1

主题

3

帖子

3

积分

贫民

积分
3
caithreecows  楼主| 发表于 2017-12-18 18:11:48 | 显示全部楼层
bigpang 发表于 2017-12-18 17:56
except是,发生错误时执行,而不是else时执行。if判断没发生错误,所以不会执行except里面的句子。
excep ...

明白了,非常感谢!
回复 支持 反对

使用道具 举报

7

主题

33

帖子

33

积分

贫民

积分
33
bigpang 发表于 2017-12-19 09:05:27 | 显示全部楼层
caithreecows 发表于 2017-12-18 18:11
明白了,非常感谢!

不客气
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表