python中输入参数定义的bool类型,为什么输入什么if判断都是true?

1、问题现象是什么?

is_employee = (bool(input("请确认您是否是本公司内部人员:")))
if is_employee is True:
    print("您属于本公司人员,请进!")
else:
    print("外来人员请勿入内!")

这段代码中,输入任何值都是走True的路径,

输入1,-1,0,空格,False,否,非,是,888,

都会输出:您属于本公司人员,请进!,就是不走else的那条;

2、为什么会这样?

首先,需要看一下这行代码:

is_employee = (bool(input("请确认您是否是本公司内部人员:")))

我们需要知道-->input("请确认您是否是本公司内部人员:")这个输入的是字符串,

就算是我们输入的0,False,None,空格,其实不是他们本身,在代码里的读取的样子为:

'0', 'Flase', 'None', '  '

bool(0)是False,bool('0')是true,

所以这行代码(bool(input("请确认您是否是本公司内部人员:")))===(bool(“字符串”))

所以不管怎么输入,输入什么都是true;

3、怎么办?

我想了一个歪主意,仅代表我自己,并不是最优解,如果大家有更好的办法可以积极交流,Thanks♪(・ω・)ノ

# 注意0代表不是,非0数字代表是,负数也是是
input_information = (input("请输入你是否是本公司人员:"))
is_employee = (int(input_information))
if  is_employee:
    print("你是本公司内部人员,请进")
else:
    print("您不是内部人员,请绕行")

把输入的值转换成int型,默认0就是False,如果是内部人员,就1或者非0 数字,如果非内部人员,就输入0;

注意这个时候不能输入空格会报错,我们此刻只默认0为非的情况;

效果图如下:

 

 

 

 以上是我在练习过程中遇到的问题以及我的解决方式,如果您有更好地,都可以积极指出一起讨论。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值