条件语句一般用来判断给定的条件是否成立,根据结果来执行不同的代码,也就是说,有了条件语句,才可以根据不同的情况做不同的事,从而控制程序的流程。

布尔类型

前面说到数据类型的时候,其中有一种叫 “布尔” 的类型,对于读者们来说应该有一点困惑的,作者当初接触到布尔类型的时候也想过:

“这东西能有什么用?”

其实,布尔类型和条件语句是密不可分的,判断一个条件是否成立,就是这个条件是“真”(True)还是“假”(False)。

关键字-if

if是python的一个关键字,我们的条件语句就是if语句,基本语法格式如下:

# 代码
if condition :
# 在这里写下条件condition成立要执行的代码
# 代码

代码块

冒号:表示一个代码块的开始,代码块里可以有多行语句,一个代码块被视为一个整体,可以认为一个代码块就是一条语句,if语句中的条件(上面的condition)成立,就执行后面的一个代码块。

在C语言中,代码块是花括号括起的:{代码块}。而在python中,代码块是以缩进为准的,同一个代码块的行首空格数必须相同,否则执行时就会报错。python并不强制要求缩进的空格数量,官方建议用4个空格来作为代码块的缩进,也有人用制表符tab来缩进代码,这两种选择是网络上的两大对立阵营。其实用哪种也没必要纠结,按照官方的来就好了。

“但是每次都打那么多空格很费劲啊!”

不用担心,一般的编辑器都可以配置tab自动转换成指定数量空格,想要4个空格的时候,只需按下按键Tab。


说多无益,下面来个例子(**注意,不要忘了写冒号:):

print("程序开始")
if 10 > 3 :
print("if代码块开始")
print("10是大于3的")
print("if代码块结束")
print("程序结束")

代码是从上往下一行一行的执行的,首先会打印程序开始,进入条件的判断,10 > 3成立,结果为True,所以进入代码块,执行代码块中的三条语句,最后一行代码的缩进与前面的不同,所以if的代码块已结束,执行最后一行语句,最终输出如下:

程序开始
if代码块开始
10是大于3的
if代码块结束
程序结束

关键字-else

我们还可以用关键字else形成的else语句,追加一个代码块,来表示条件不成立时执行:

age = 17
if age >= 18:
print("你是个成年人")
else:
print("你还未成年")

上面的代码中,条件age>=18不成立,为False,进入else的代码块,所以输出为:

你还未成年

关键字-elif

上面的例子中,仅仅做了一个条件的判断,如果18岁以下再细分为16岁以上和16岁以下要怎么做才好?

或许有些读者还是很聪明的。我们可以在else语句中,嵌套一个代码块,像这样:

age = 17
if age >= 18:
print("你是个成年人")
else:
if age >= 16:
print("你还未成年,但你已经超过16岁了!")
else:
print("你还没到16岁")

上面的代码可以解决刚刚提出的问题,可是如果16岁以下还要细分怎么办?再嵌套?

当然不行,如果嵌套过多会出现如下情况:

if condition1:
code1
else:
if condition2:
code2
else:
if condition3:
code3
else:
if condition4:
code4
......

这就像是灾难!代码不仅不美观,而且可读性变差,不易于理解。

那么怎么办?

elif该登场了<( ̄︶ ̄)>,用上elif语句后,问题迎刃而解:

age=8
if age >= 18:
print("你是个成年人")
elif age >= 16:
print("你还未成年,但你已经超过16岁了")
elif age >=14:
print("你还是个14岁不到的小孩,无忧无虑")

上面的if条件不成立,所以跳到第一个elif中继续判断条件,条件仍然不成立,到下一个elif中继续判断,条件成立,程序输出:

你还是个14岁不到的小孩,无忧无虑

比较运算符

通常在写代码中很少直接出现布尔值TrueFalse,而是通过比较运算得出来的,像上面的>=>就是比较运算符了,下面是python所有的比较运算符:

运算符 意义 例子
== 等于 1==1为True,1==2为False
!= 不等于 1!=2为True,1!=1为False
> 大于 2>1为True,3>5为False
>= 大于或等于 2>=1为True,2>=2为True,3>=4为False
< 小于 1<2为True,2<1为False
<= 小于或等于 1<=2为True,2<=2为True,4<=3为False

注意:其中的“等于”用的是连续的两个等号==,而一个等号=是赋值运算符,不要写错了。

逻辑运算符

其实之前讲布尔类型的时候也提到过逻辑运算符,同样给出一个表格:

运算符 意义 例子
and 并且,数学中的 且(∧),两个都为True才为True 100>3 and 3<=4为True
or 或者,数学中的或(∨),其中一个为True就为True 1>2 or 5>6为False
not 非,数学中的非(┐),取反 not True为False,not False为True

多用用就可以记住了,读者们没必要死记硬背。

再谈布尔类型

先来运行下面的代码:

if 0:
print('0') if 1:
print('1') if 2:
print('2') if 'abc':
print('abc')

程序输出了:

1
2
abc

这是什么回事??为什么1与True有同样的效果??为什么0与False有同样的效果??……

其实这是python自动的将一些值转换成了布尔类型,不同的数据类型有不同的转换方式,常见的有以下的几种:

数据类型 转换方式
整数int 0转换成False,其它值转换成True
浮点数float 0.0转换成False,其它值转换成True
字符串str 空串""转换成False,其它转换成True
列表list 空列表[]转换成False,其它转换成True
字典dict 空字典{}转换成False,其它转换成True
集合set 空集合set()转换成False,其他转换成True

后面三个是即将要学到的三种数据结构,是python的基本数据类型,可先忽略。

如果不清楚转换方式,可以自己手动转换看看结果,用bool()包起来,如下:

>>> bool(0)
False
>>> bool(123)
True
>>>

注意:上面用词为“转换”,意味着不是“等于”,也就是说,123不等于True,只是转换之后是True,我们可以实验一下:

>>> 123==True
False
>>> ""==False
False
>>> 0==False
True
>>> 1==True
True
>>>

刚才说过了,“转换”不意味着“等于”,所以前面两个的结果当然是False了,可是,后两个为什么是True

这个嘛,在python中bool类型是int类型的一个子类型(暂且这么说),True其实就是用数值1来表示的,False是用0来表示的,所以……希望读者不会晕(@_@)


没想到这一节挺长的,读者好好消化吧。

python教程(二)·条件语句的更多相关文章

  1. Python基础之条件语句和循环

    条件语句 Python中的条件语句分为 if ...else . if ...elif...else  以及if ...else 的嵌套使用: username = input('请输入您的用户名:' ...

  2. 【Python】-NO.99.Note.4.Python -【Python3 条件语句 循环语句】

    1.0.0 Summary Tittle:[Python]-NO.99.Note.4.Python -[Python3 条件语句 循环语句] Style:Python Series:Python Si ...

  3. Python编程基础[条件语句if 循环语句 for,while](二)

    ython条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: if 判断条件: 执行语句……else: 执行语句…… x= ...

  4. python学习-4 python基础-2 条件语句(if的简单用法1)

    条件语句的原理: 2.举个例子:比大小 #!/usr/bin/env python # -*- coding:utf8 -*- a=input("请输入a:") b=input(& ...

  5. python流程控制-条件语句If,while循环

    一.If,条件语句-选择 格式:python简洁优美,注意缩进 1.第一种: if 条件: 四个空格(tab键)  满足条件时的执行步骤 if 5>4 : print(666) print(77 ...

  6. 04 . Python入门之条件语句

    一. Python条件语句 Python条件语句是通过一条或多条语句执行结果(True或False)来决定执行的代码块. 可以通过下图简单了解语句的执行过程 Python程序语言指定任何非0和非空(n ...

  7. 【Python】解析Python中的条件语句和循环语句

    1.if语句 if语句有好几种格式,比如: if condition: statement 使用 if ... else ...: if condition: statement(1) else: s ...

  8. python学习之条件语句(if循环)

    Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块.可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非空(null)值为tru ...

  9. python的if条件语句的语法和案例

    1.条件语句 缩进用4个空格 if条件: #条件成功, else: #条件不成功 if条件:{ #条件成功, #条件成功, }else{ #条件不成功, #条件不成功, } if的语法就是这样或者是用 ...

  10. Python基础、条件语句和基本数据类型

    1. 第一句python - 后缀名是可以是任意? - 导入模块时,如果不是.py文件 ==> 以后文件后缀名是 .py 2. 两种执行方式 python解释器 py文件路径 python 进入 ...

随机推荐

  1. Docker Toolbox在window 10 home 下挂载宿主机目录到容器的正确操作

    由于我是window 10 home 而不是 pro版本,只能使用Docker Toolbox,其实docker for window对windows的支持更好,还有GUI,home版本安装Docke ...

  2. SVN安装操作流程

    SVN 安装操作流程 1.服务端安装流程 1.1 双击打开svn-server安装包 1.2 点击Next 1.3 勾选上“I accert the terms in the License Agre ...

  3. batik-all-1.7

    处理highcharts导出图片出现中文乱码所用到的jar包

  4. Spring 整合Hibernate 示例

    虽然Spring整合Hibernate早就会了,但经常在创建项目整合这两个框架的时候出一些低级错误.所以在这里写一个示例,以后再遇到错误时,再把遇到的错误或异常添加上. 一.创建一个动态WEB工程,添 ...

  5. HTML和CSS实现常见的布局

    https://segmentfault.com/a/1190000003931851#articleHeader15

  6. Codeforces Round #538 (Div. 2) D. Flood Fill 【区间dp || LPS (最长回文序列)】

    任意门:http://codeforces.com/contest/1114/problem/D D. Flood Fill time limit per test 2 seconds memory ...

  7. JDBC(1)简单介绍/数据库的连接

    初识JDBC: JDBC是java连接数据库的一个工具,没有这个工具,java将无法和数据库进行连接. JDBC API: JDBC是个“低级”接口,也就是说,他直接用于调用SQL命令. JDBC驱动 ...

  8. ssm小小整合

    ssm整合: 首先是创建数据库: CREATE TABLE `user` ( `id` ) NOT NULL, `username` varchar() NOT NULL, `password` va ...

  9. java中构造器的调用顺序

    在编程的过程中,我们经常会遇到多个类的继承问题,那么多个类的构造器是按照什么顺序调用的呢? 先看一段代码: public class Meal { public Meal() { System.out ...

  10. 设计模式——Spirng_Bean工厂

    前言:对于简单工厂和抽象工厂都有自己的优点和缺点, 比如简单工厂,如果你需要实现的类过多,你最后会出现工厂泛滥的情况,没有有效的控制代码的可重复性.http://www.cnblogs.com/xia ...