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

关于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!

结果却出现:

关于python中“&”条件的判断易错点!!!萌新踩雷!!!_第1张图片

原因:聚焦第一个判断条件,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!")

正确运行

关于python中“&”条件的判断易错点!!!萌新踩雷!!!_第2张图片

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

输入51,得到的答案是 21.03

关于python中“&”条件的判断易错点!!!萌新踩雷!!!_第3张图片

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

关于python中“&”条件的判断易错点!!!萌新踩雷!!!_第4张图片

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

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

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

你可能感兴趣的:(python,python,算法)