python之布尔值(Booleans)和if条件语句

您所在的位置:网站首页 python条件运算语句 python之布尔值(Booleans)和if条件语句

python之布尔值(Booleans)和if条件语句

#python之布尔值(Booleans)和if条件语句| 来源: 网络整理| 查看: 265

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 -26

python的处理机制是向下取整,也就是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 True

python的逻辑运算也是有优先级的哦! 例如,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