关闭

Python——if语句和真值测试

标签: Pythonif真值测试
1731人阅读 评论(0) 收藏 举报
分类:

if语句

一般形式:

if <test1>:
	<statements1>
elif <test2>:
	<statements2>
else <test3>:
	<statements3>
注意:Python中没有switch或case语句,在Python中,多路分支是写成一系列的if/elif测试,或者对字典进行索引运算或搜索列表。因为字典和列表可以在运行时创建,有时会比硬编码的if逻辑更有灵活性。
>>> choice = 'ham'
>>> print({'spam':1.25,
       'ham':1.99,
       'eggs':0.99,
       'bacon':1.10}[choice])
1.99
上面的字典就是多路分支,根据键的选择进行索引,再分支到一组值中的一个,很像C语言中的Switch。当没有键匹配时,按默认情况处理,就像我们之前见到的,字典默认值能编码到has_key测试、get方法调用或异常捕捉中。在这里也能用相同的技术,在字典式的多路分支中用于编写默认动作。如下是通过get方法处理默认值的情况:
>>> branch = {'spam':1.25,'ham':1.99,'eggs':0.99}
>>> print(branch.get('spam','Bad Choice'))
1.25
>>> print(branch.get('bacon','Bad Choice'))
Bad Choice
=========================================================================================
一些语法规则:

【字典适用于将值和键关联,但如果通过if语句来编写的更复杂动作呢?在之后将会学到字典也可以包含函数,从而代表更为复杂的分支动作,并实现一般的跳跃表格。这类函数作为字典的值,通常写成函数名或lambda,通过增加括号调用来触发其动作】
【虽然字典式多路分支在处理动态数据的程序中很有用,但多数程序员发现,编写if语句是执行多路分支最直接的方式。编写代码的原则是:有疑惑的时候,就遵循简易性原则和可读性原则】
【缩进:每个缩进层级使用4个空格或者一个制表符,这是通常的惯例;避免混合使用制表符和空格!】
【相邻的字符串常量是隐式地连接起来的】

=========================================================================================

真值测试

在Python中:
【1】任何非零数字或非空对象都为真
【2】数字零、空对象以及特殊对象None都被认作是假
【3】比较和相等测试会递归地应用在数据结构中
【4】比较和相等测试会返回True或False(1和0的特殊版本)
【5】布尔and和or运算符会返回真或假的操作对象

Python中有三种布尔表达式运算符:
【1】X and Y 如果X和Y都为真,就是真
【2】X or Y 如果X或Y为真,就是真
【3】not X 如果X为假,那就是真(表达式返回True或False)

此处,X和Y可以是任何真值或者返回真值的表达式(例如,相等测试,范围比较等)

布尔运算法在Python中是字(不是C的&&、||和!)。此外,布尔and和or运算符在Python中会返回真或假对象,而不是值True或False:

>>> 2<3,3<2
(True, False)
在Python中像这类值的比较会返回True或False作为其真值结果,但其实这些只是整数1和0和特殊版本(打印时不同,其实完全一样)
另一方面,and 和 or 运算符总会返回对象,不是运算符左侧的对象,就是右侧的对象。

就or测试而言,Python会从左至右求操作对象,然后返回第一个为真的的操作对象。再者,Python会在其找到的第一个真值操作数的地方停止,这通常叫做短路计算,因为求出结果后,就会使表达式其余部分短路:

>>> 2 or 3,3 or 2
(2, 3)
>>> [] or 3
3
>>> [] or {}
{}

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:337559次
    • 积分:5294
    • 等级:
    • 排名:第5105名
    • 原创:152篇
    • 转载:39篇
    • 译文:5篇
    • 评论:46条
    GitHub
    博客专栏
    JavaWeb框架

    文章:6篇

    阅读:13753
    XML

    文章:7篇

    阅读:26162
    Servlet

    文章:24篇

    阅读:60756
    Python3

    文章:44篇

    阅读:75894
    最新评论