python之布尔值(Booleans)和if条件语句 |
您所在的位置:网站首页 › python条件运算语句 › python之布尔值(Booleans)和if条件语句 |
python之布尔值(Booleans)和if条件语句
Reference: Kaggle Notebook Booleans & conditionals! Click me! 1. 布尔值(Booleans)问题1: 什么是Booleans? 先看看代码: x = True print(x) print(type(x))输出: True“bool” 是python中的一种类型(type),只有两种值:True 或者 False。 2. 布尔运算(Boolean Operators)其实True或者False的值不是直接从代码中获取的,而是通过布尔运算得到的;而布尔运算就相当于在回答yes或者no的问题。 下表是比较运算符的集合: 运算符描述a == ba等于ba < ba小于ba ba 大于ba >= ba大于等于b我们来看一段代码吧: def can_run_for_president(age): """Can someone of the given age run for president in the US?""" # US政府要求年龄必须大于或等于35岁 return age >= 35 #布尔运算 print("Can a 19-year-old run for president?", can_run_for_president(19)) print("Can a 45-year-old run for president?", can_run_for_president(45))输出: Can a 19-year-old run for president? False Can a 45-year-old run for president? True上一节我们学了自定义函数。 1、上述代码的自定义函数名为“can_run_for_president",参数为age。此函数主要用于判断主席的年龄是否大于或者等于35岁,返回结果是bool类型-True 或者 False。 2、我们一起来看看print函数,print函数里调用了自定义函数,并指定了参数的值为19和45。显然19 < 35,因此返回False;而45 > 35,因此返回True。 python有时候很聪明: >>> 3.0 == 3 True但有时候吧,又是不太聪明的亚子。。 >>> '3' == 3 False为啥同样都是3,但是第二个却返回的是False呢? 因为多了一个单引号,导致3变成了字符串。 布尔运算还可以结合算术运算哦先看看代码: def is_odd(n): #判断数值是否是奇数 return (n % 2) == 1 print("Is 100 odd?", is_odd(100)) print("Is -1 odd?", is_odd(-1))输出: Is 100 odd? False Is -1 odd? True解析: 1、第一个print函数:100/2的余数为0,因此不等于1,返回False; 2、第二个print函数:(-1)/2的余数为1,因此返回True。 在这里,我想说一下为什么(-1)%2 = 1,为什么不是-1这其实和python的底层机制有关 python的“//”和“%”操作都是向下取整的; 举个例子: >>> 256/10 25.6 >>> 256//10 25 >>> -256/10 -25.6 >>> -256//10 -26python的处理机制是向下取整,也就是25.6取25,-25.6取-26。但也正因为向下取整机制,取余也受到了影响。 python的取余机制是:余数=除数-被除数*(除数//被除数) 举个例子: >>> -256/10 -26 >>> -256%10 4解析: 余数 = -256 - 10 * (-26) = 4 因此-1/2 = -0.5,取整-1,余数 = -1 - 2 * (-1) = 1 细品细品~~~ 注意: 很多初学者都会犯的一个小错误,就是混淆了“==”和“=”的用法。如果用于比较,则必须使用双等号 “= =”;而“=”代表的是赋值。 3. 逻辑运算(Combining Boolean Values)这一小节主要想介绍python的布尔逻辑运算-逻辑或非(“和”、“或”、“非”)。 python运算符描述and和or或not非首先先来段代码:(上一小节代码的升级版) def can_run_for_president(age, is_natural_born_citizen): """Can someone of the given age and citizenship status run for president in the US?""" # US政府要求主席必须满足两个条件,一个是最低35岁,一个是必须是公民 return is_natural_born_citizen and (age >= 35) #逻辑运算 print(can_run_for_president(19, True)) print(can_run_for_president(55, False)) print(can_run_for_president(55, True))输出: False False Truepython的逻辑运算也是有优先级的哦! 例如,and比or有更高的优先级。 试试下面的代码: >>> True or False and True True 注意注意注意:True和False一定要首字母大写!!!虽然可以记住运算符的优先级,但是还是养成加括号的习惯比较优秀哦~不仅可以保证不出错,还可以让你的语句更加易懂。 我们再来看一个example: prepared_for_weather = have_umbrella orrain_level 1 0 and is_workday 这其实想表达的意思有三个: 1、我有雨伞; 2、雨不是很大,而且我有食物; 3、除非有雨而且是工作日; 但是看上去太吃力了,有and、or和not。 我们可以试试加括号: prepared_for_weather = ( have_umbrella or (rain_level 1 0 and is_workday)) ) 是不是瞬间感觉舒服了 😃 4. 条件性语句(Conditionals)本小节主要介绍结合布尔运算的if语句的用法,简单来说就是基于布尔值(True或False),而决定是否执行下一步; 关键词:if、elif、else 简单的程序: def inspect(x): #创建函数inspect() if x == 0: #判断是否等于0 print(x, "is zero") elif x > 0: #判断是否大于0 print(x, "is positive") elif x 0: print("Only printed when x is positive; x =",x) print("Also only printed when x is positive; x =", x) print("Always printed, regardless of x's value; x = ", x) f(1) f(0)输出: Only printed when x is positive; x = 1 Also only printed when x is positive; x = 1 Always printed, regardless of x's value; x = 1 Always printed, regardless of x's value; x = 0仔细看,第三个print()函数并不在if的代码块里哦;所以第三个print函数,不管x是否大于0,都会返回; 5.布尔转换(Boolean conversion)我们之前学过,int()函数可以将数值转换为整数,float()函数可以将数值转换为浮点数;但是bool()函数也可以实现转换哦; 先看看代码: >>> bool(1) True >>> bool(100009) True >>> bool(0) False >>> bool("apple") True >>> bool(' ') True >>> bool('') False解析: 1、除0外的所有数字,都被认为是True; 2、所有字符串都被认为是True,包括空格;但像bool(’’),单引号内无任何内容,则被认为是False; 但是如果没有使用运算符号,则boolean value都默认为false; 请看以下代码: def test_boolean(x): if 0: print(0) elif "spam": print("spam") test_boolean(0) test_boolean(1)输出: spam spam 6. 条件表达式(Conditional Expression)直接看代码去理解: def quiz_message(grade): if grade |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |