Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ

  到目前为止,Python基础系列的文章中的程序都是一条一条语句顺序执行的。在本章中,我会重点介绍让程序选择是否执行语句块的方法。

  Python程序为什么可以实现自我选择的功能呢?因为它可以根据条件进行判断是否执行下面的语句块。

  Python基础——数据类型中讲到的布尔值就与条件判断有着必然的联系。

条件判断

 1.1 语句块

  什么是语句块呢?

  语句块是在条件为真(条件语句)时执行或者执行多次(循环语句)的一组语句。在代码前放置空格来缩进语句即可创建语句块。

  关于缩进:

    使用tab键也可以缩进语句块。Python将一个tab字符解释为到下一个tab字符位置的移动,而一个tab字符位置为8个空格,但是标准且推荐的方式是只用空格,尤其是在每个缩进需要4个空格的时候。

  在Python中,英文版冒号(:)用来标识语句块的开始,块中的每一个语句都是缩进的(缩进量相同)。当回退到和已经已经闭合的块一样的缩进量时,就表示当前块已经结束了(这个不用担心,很多程序编辑器和集成开发环境都知道如何缩进语句块,可以帮助用户轻松把握缩进)!!!

 1.2 条件和条件语句

  传说中的if语句就要闪亮登场啦~~~

  使用条件语句不要少写了冒号(:),而且必须是英文版本的。

  1. if语句

  对于if语句,若条件判定为真,那么后面的语句块就会被执行。若条件判定为假,语句块就会被跳过,不会执行。

 #if语句
age = 20
if age >= 18:
print('your age is', age)
print('adult')

  2. else语句

  else子句只是增加一种选择(之所以叫做子句是因为它不是独立的语句,而是if的一部分)。if...else...搭配,若if语句为False,不执行if下的语句块,而去else下的语句块。

 #if...else...语句
age = 3
if age >= 18:
print('your age is', age)
print('adult')
else:
print('your age is', age)
print('teenager')

  3. elif语句

  如果需要检查多个条件,就可以使用elif,它是else if的简写,也是if和else语句的联合使用,即使用elif做更细致的判断:

 #if...elif...elif...else...语句
age = 3
if age >= 18:
print('adult')
elif age >= 6:
print('teenager')
else:
print('kid')

  4. 条件语句总结

if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>

  5. 注意点

  if语句执行有个特点,它是从上往下判断,如果在某个判断上是True,把该判断对应的语句执行后,就忽略掉剩下的elifelse语句,所以,请测试并解释为什么下面的程序打印的是teenager:

 #条件语句执行特点:从上往下判断
age = 20
if age >= 6:
print('teenager')
elif age >= 18:
print('adult')
else:
print('kid')

  6. input()运用

  最后看一个有问题的条件判断。很多同学会用input()读取用户的输入,这样可以自己输入,程序运行得更有意思,更有人性化。其实啊,Error往往出现在意想不到的地方。不信,来看段代码:

#if语句中使用input()方法
birth = input('birth: ')
if birth < 2000:
print('00前')
else:
print('00后')

  输入1993,结果报错:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: str() > int()

  为什么呢?我在刚接触Python时,用到此处报错也是百思不得其解,同样纠结了好久。直到后来,我才慢慢懂了。

  关于input(),我在随笔《Python基础——输出[print()]与输入[input()]》中已经讲得比较详细了。

  这是因为input()返回的数据类型是strstr不能直接和整数比较,必须先把str转换成整数。Python提供了int()函数来完成这件事情。

s = input('birth: ')
birth = int(s)
if birth < 2000:
print('00前')
else:
print('00后')

  因此,在编程中,条件判断是非常重要的。条件判断可以让计算机自己做选择,Python的if...elif...else很灵活。条件判断从上向下匹配,当满足条件时执行对应的块内语句,后续的elif和else都不再执行。

1.3 条件运算符

  条件判断,if语句重在判断并选择是否执行,而没有过多涉及条件本身。

  下面是Python中常见的条件运算符:

Python中的条件运算符
表达式 描述
x == y x 等于 y
x < y x 小于 y
x > y x 大于 y
x >= y x 大于等于 y
x <= y x 小于等于 y
x != y x 不等于 y
x is y x和y是同一个对象
x is not y x和y不是同一对象
x in y x是y容器的成员
x not in y x不是y容器的成员

  在Python中,比较运算和赋值运算是可以连接的——几个运算符可以连在一起使用,比如: 0 < age <120。

  有些运算符值得特别关注:

  一、相等运算符

  如果想要知道两个内容是否相等,你应该使用相等运算符,即两个等号==。请务必记得是两个等号!!!单个等号可是赋值啊~~~

 #相等运算符==
>>>"python" == "python"
True
>>>"Python" == "python"
False
>>>"python" = "python"
File "<stdin>", line 1
SyntaxError: can't assign to literal
#很明显,单个相等运算符是赋值运算符,是用来改变值的,而不能用来比较

  二、is:同一性运算符

  这个定义很不友好,什么是同一性?首次接触真是云里雾里啊,真正理解is运算符才知道同一性的真谛。

  乍一看,is运算符和==一样,事实上却不同。

  示例代码如下:

 #同一性运算符:is
#is和==之间的差异
>>>x = y = [1,2,3]
>>>z = [1,2,3]
>>>x == y
True
>>>x == z
True
>>>x is y
True
>>>y is x
True
>>>x is z
False
>>>z is x
False

  注:==运算符比较两个对象是否相等,is判定两者是否等同(同一个对象)。

  三、in:成员资格运算符

  四、布尔运算符:and、or和not

  五、短路逻辑

  短路???条件表达式中的布尔运算符就有这个特性。什么是短路逻辑呢?如下所示:

  条件表达式:a and b,该表达式何时返回True呢?即a与b同时为真,若a判定为False,则无论b是真是假,该表达式都为为False。

  事实上,如果x为假,条件表达式会返回x的值,否则返回y的值。这种行为被称为短路逻辑。而短路逻辑同样适用于or运算符。

小结

  1. 等号运算符:==,单个等号=为赋值运算符;

  2. Python的条件判断if...elif...else很灵活;

  3. 条件判断从上向下匹配;

  4. 短路逻辑适用于布尔运算符(and,or)。

Python基础——条件判断的更多相关文章

  1. Python基础(条件判断和循环) if elif else for while break continue;

    条件判断 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现: age = 20 if age >= ...

  2. python基础----条件判断与循环

    一.python数据类型 1.整数(包括整数.负数) 2.浮点数(小数) 3.字符串(需要用单引号‘’或双引号“”括起来) 注:当字符串中含有单引号时,用双引号括起来(now="let's ...

  3. Python基础 条件判断和循环

    pyhton if 语句 if 语句后接表达式,然后用: 表示代码块. age = 20 if age >= 18: print 'your age is', age print 'adult' ...

  4. Python之条件判断和循环(入门4)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6407755.html 本文出自:[Edwin博客园] Python之条件判断和循环 1. Python之if ...

  5. python之条件判断、循环和字符串格式化

    1. python的条件判断:if和else 在条件判断中可以使用算数运算符 等于:== 不等于:!= 大于:> 小于:< 大于等于:>= 小于等于:<= 示例1: usern ...

  6. Python之条件判断

    Python之条件判断 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现: age = 20 if age ...

  7. 【Python】 [基础] 条件判断 与 循环 与dict和set

    # 条件判断 elif:  else if 的作用 注意: : [冒号]BMI =w/(h*h) if BMI<15:    print('较轻')elif BMI<25:    prin ...

  8. 006-python基础-条件判断与循环

    一.条件判断 场景一.用户登陆验证 # 提示输入用户名和密码 # 验证用户名和密码 # 如果错误,则输出用户名或密码错误 # 如果成功,则输出 欢迎,XXX! #!/usr/bin/env pytho ...

  9. python(1) - 条件判断和循环

    条件判断: 比如输入用户年龄,根据年龄打印不同的内容,在python中用if语句实现: age = 20 if age >= 18: print('你可以看这个视频!') 可以给if加一个els ...

随机推荐

  1. Css雪碧图

    Css雪碧图: CSS雪碧 即CSS Sprite,也有人叫它CSS精灵,是一种CSS图像合并技术,该方法是将小图标和背景图像合并到一张图片上,然后利用css的背景定位来显示需要显示的图片部分. 原理 ...

  2. Codeforces 899 F. Letters Removing (二分、树状数组)

    题目链接:Letters Removing 题意: 给你一个长度为n的字符串,给出m次操作.每次操作给出一个l,r和一个字符c,要求删除字符串l到r之间所有的c. 题解: 看样例可以看出,这题最大的难 ...

  3. zTree中父节点禁用,子节点可以用

    参考学习网址:http://www.treejs.cn/v3/main.php#_zTreeInfo zTree中父节点禁用,子节点可以用 axios.get('/base/unit/unittree ...

  4. mysql-innoDB-多版本并发控制(MVCC)

    InnoDB的MVCC,是通过在每行记录后面保存三个隐藏的列来实现的其中的两个列一个保存了行的创建时间,一个保存行的过期时间(或删除时间).当然存储的并不是实际的时间值,而是系统版本号(system ...

  5. junit4X系列--Rule

    原文出处:http://www.blogjava.net/DLevin/archive/2012/05/12/377955.html.感谢作者的无私分享. 初次用文字的方式记录读源码的过程,不知道怎么 ...

  6. 网络编程之TCP编程

    网络编程之TCP编程 前面已经介绍过关于TCP协议的东西,这里不做赘述.Java对于基于TCP协议的网络通信提供了良好的封装,Java使用socket对象来代表两端的通信窗口,并通过Socket产生I ...

  7. 在eclispe的类中快速打出main方法

    在java类中快速打出main方法有两种途径: 1. 在新建类时,在New Java Class窗口中,将public static void main ( String[ ] args ) 前面打上 ...

  8. Request.getparameternames 获取form表单里面所有的请求参数 。 返回一个Enumeration类型的枚举.

    通过Enumeration的hasMoreElements()方法遍历.再由nextElement()方法获得枚举的值.此时的值是form表单中所有控件的name属性的值. 最后通过request.g ...

  9. 【SqlServer系列】浅谈SQL Server事务与锁(上篇)

    一  概述 在数据库方面,对于非DBA的程序员来说,事务与锁是一大难点,针对该难点,本篇文章视图采用图文的方式来与大家一起探讨. “浅谈SQL Server 事务与锁”这个专题共分两篇,上篇主讲事务及 ...

  10. java IO(三):字符流

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...