网站优化改动怎么做,WordPress跳转之间乱码,网站托管找,广告公司加盟代理哪家好布尔对象#xff1a;
Python中有一种对象类型称之为布尔对象#xff08;英文叫bool#xff09;。
布尔对象只有两种取值#xff0c;True和False。对应的是真和假#xff0c;或者说是和否。True对应的是#xff0c;False对应的是否。 我觉得这句话是一个关键#xff1a…布尔对象
Python中有一种对象类型称之为布尔对象英文叫bool。
布尔对象只有两种取值True和False。对应的是真和假或者说是和否。True对应的是False对应的是否。 我觉得这句话是一个关键
这个布尔对象正好对应着我们现实世界的某些条件是不是成立。例如今天是星期天吗
我们判断是真还是假。
再举一个例子我们shell脚本中也有判断语句。-e filename判断文件是否存在。-f 判断文件是否存在等等。都是返回布尔值。 布尔表达式 1 1
True
使用 来连接两个比较对象。 1 1
False 我们也可以连写
num 3
print(2 num 5) 条件组合
有的时候布尔表达式还会组合起来成为一个更大的表达式。
布尔表达式有三种组合关系。
逻辑且and
True and True # 结果为 True
True and False # 结果为 False
False and True # 结果为 False
False and False # 结果为 False
表达式1 和表达式2 都成立了最终结果才能成立。
任何一个表达式为false结果都是false。 逻辑或or
True or True # 结果为 True
True or False # 结果为 True
False or True # 结果为 True
False or False # 结果为 False
表达式任何一个计算结果为True最终结果都成立True。
两个表达式计算结果都为False结果才为False。 逻辑非not
not True # 结果为 False
not False # 结果为 True
not 加在条件表达式的前面会反转前面的结果。 上面的这些布尔表达式都表示了一个结果True或False。
那么这些表达式有什么用呢
主要是用在判断语句中。非常基础的非常重要的语法要求。 判断语句是根据某个条件决定是否要执行一些代码。 判断语句是以if语句开头的。
def registerUser():phone input(请输入你的手机号码(不超过11个字符))if len(phone) 11:print(输入错误手机号码超过了11个字符)print(函数结束)registerUser()
如果 if 关键字 后面的条件 对应的表达式 运算结果 为 True 就表示条件成立就去执行 下面缩进的 代码。
如果 if 后面的表达式结果为 False 就不会执行它 。 在编写Shell脚本的时候我们多添加if判断条件语句可以将一些条件进行约束将某个大的范围约束、缩小到某个条件内。
def registerUser():phone input(请输入你的手机号码(不超过11个字符))if len(phone) 11:print(输入错误手机号码超过了11个字符)elif not phone.isdigit():print(输入错误手机号码必须全为数字)elif not phone.startswith(1):print(输入错误手机号码必须以数字1开头)else:print(手机号码输入正确)print(执行 存储用户信息到数据库 的操作...) print(函数结束)registerUser()
这种if语句结构都是通过条件表达式进行判断。 跟c语言中的单分支、双分支和多分支一样的。
这些逻辑表达式确实是需要好好地理顺才行的。 如果我们要求在输入检查条件全部通过之后执行存储用户信息到数据库的操作可以写到最后的else语句中。
def registerUser():phone input(请输入你的手机号码(不超过11个字符))if len(phone) 11:print(输入错误手机号码超过了11个字符) elif not phone.isdigit() : print(输入错误手机号码必须全是数字)elif not phone.startswith(1) : print(输入错误手机号码必须以数字1开头)else:print(手机号码输入正确) print(执行 存储用户信息到数据库 的操作...)
函数执行某个功能前要做一些条件检查如果这些条件任何一个不满足后续的操作就不要做了。
def registerUser():phone input(请输入你的手机号码(不超过11个字符))# 下面任何一个检查条件不通过直接 return 返回if len(phone) 11:print(输入错误手机号码超过了11个字符)returnif not phone.isdigit() : print(输入错误手机号码必须全是数字)returnif not phone.startswith(1) : print(输入错误手机号码必须以数字1开头)return# 前面的条件检查全部通过print(手机号码输入正确) print(执行 存储用户信息到数据库 的操作...)
结合return语句这种程序的可读性更好。 某个国家的计费计算
里程收费 320元/每公里 3 15元/每公里
这是典型的双分支if-else结构
def charge(miles):if miles 3:unit 20else:unit 15return miles * unitprint(charge(3))
print(charge(5)) 那如果我们这么写
def charge(miles):if miles 3:unit 20if miles 3:unit 15return miles * unitprint(charge(3))
print(charge(5))
也是可以得到正确的结果。
但是这两个程序还是有区别的。
if-else双分支结构只执行其中一个分支。而两个if语句两个if语句都会进行判断。效率没有if-else高。 如果这个出租车的计费规则更复杂些
里程收费 3 公里20元/每公里 3 公里 5 公里15元/每公里 5 公里 8 公里12元/每公里 8 公里10元/每公里
那这种情况就用多分支结构进行处理
def charge(miles):if miles 3:unit 20elif 3 miles 5:unit 15elif 5 miles 8:unit 12else:unit 10return miles * unitprint(charge(1))
print(charge(4))
print(charge(7))
print(charge(10))
elif后面有一个条件表达式而else没有。 条件判断的嵌套
def charge(miles, duration):if miles 3 and duration 1:print(20 元/每公里)return miles*20elif miles 3 and duration 1 :print(15 元/每公里)return miles*15 有的时候条件判断成立或者不成立后面要做什么还需要再次分情况处理。 这时候往往需要在缩进的代码中再次进行条件判断。
def charge(miles, duration):if miles 3:if duration 1:unit 20return miles * unitelse:unit 22return miles * unitelif miles 3:if duration 1:unit 15return miles * unitelse:unit 18return miles * unit 另外在这个场景中还有一些比较特殊的情况。 要细心地对这些进行梳理各种情况把程序才能写好。细心和耐心。