关于python中“&”条件的判断易错点!!!萌新踩雷!!!

本文探讨了Python中使用'&'进行条件判断时的一个常见错误,指出当大于号在前,小于号在后时,小于号条件可能被忽略。作者分享了自己在编程竞赛中遇到的问题及解决方案,强调if语句条件顺序的重要性,并提醒读者注意浮点数结果的准确性。

关于python中“&”条件的判断易错点!!!萌新踩雷!!!

话不多说,上代码:
e=int(input())
if e<=50&e>=0:
    print("cost = {:.2f}".format(e*0.53))
elif e>50:
    x=(e-50)*0.58+26.5
    print("cost = {:.2f}".format(x))
elif e<0:
    print("Invalid Value!")
乍一看,还真看不出问题(大牛除外)

但是,当你复制这段代码在编辑器(这里用的竞赛专用IDLE)运行的时候 ,

输入负数,测试,

惊人发现,本来应该打印出Invalid Value!

结果却出现:

原因:聚焦第一个判断条件,python3先判断“&”前面的,判断完前面判断后面的条件

当大于号在前,小于号在后面时,小于号的条件就被忽略了!!!

更正后代码:
e=int(input())
if e>=0&e<=50:
    print("cost = {:.2f}".format(e*0.53))
elif e>50:
    x=(e-50)*0.58+26.5
    print("cost = {:.2f}".format(x))
elif e<0:
    print("Invalid Value!")

正确运行

但是这道题,如果这么写是有问题的,在pta上测试始终有一个测试点通过不了,经过自己的一番测试,我发现

输入51,得到的答案是 21.03

我采用两种方法求证,发现是if语句出了问题,这样改正就对了

总结:if语句的条件要顺着依次来,不能把其他语言的坏习惯带到python中;关于规避浮点数结果正确的问题要进一步研究

非常感谢,你能看到这里,如有错误欢迎留言指正,一起进步吧~

也希望走过路过的大神给萌新一点指点,喵呜~(╹▽╹)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值