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为非的情况;
效果图如下:
以上是我在练习过程中遇到的问题以及我的解决方式,如果您有更好地,都可以积极指出一起讨论。