Python的输入问题

img


为什么这样输入会输出pass
怎么输入才能让has_ticket是False

输入0当做字符串,你需要先转换为整型,再转换为布尔型吧

has_ticket = bool(int(input("是否持有车票:")))

同学,你现在跟的是《黑马程序员》的课吧,这个我看过,我讲几点啊。
1.使用input()函数输入的是字符串,如果后面跟整型或者布尔型做比较或运算,要进行类型转换,比如int(input())转化为整型bool(input())转换为布尔型
2.如果还有什么不懂的,可以看我的博客,你会有收获的,也可以私信我。

把h_t=bool(input("w"))换成 h_t=bool(int(input("w")))

有可能0是字符串类型的或者你多打了空格,所以是True,所以第一个if会被执行,而第二个if,因为10<=20,所以下面也被执行了,因此输出pass

img


在python当中,空和0做判断的时候会当作False处理,
你想要第一个条件不满足,has_ticket被判断为False,只有当has_ticket的值为空和数字类型0的时候才满足。
但是有个int转型,不输入值得到空值,转int类型会报错,
所有只有你输入0才满足你的需求

input返回的都是字符串,所以返回了'0',可以输入空也就是直接回车


has_ticket=int(input("是否持有车票:"))
knife_length=int(input("持有刀的长度:"))
if has_ticket>0:
    if knife_length<=20:
        print("pass")
    else:
        print("no pass")
else:
    print("no pass")   

img

img

img

img

img

“快乐鹦鹉”(我发文回答时页面没有显示“快乐鹦鹉”的回答,才发现他是最早回复的,我原来没看见)和“梦回元悟”提到的方法也可行,随你自己喜欢

has_ticket = bool(int(input("是否持有车票:")))
knife_length=int(input("持有刀的长度:"))
if has_ticket:
    if knife_length<=20:
        print("pass")
    else:
        print("no pass")
else:
    print("no pass")