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

布尔类型

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

“这东西能有什么用?”

其实,布尔类型和条件语句是密不可分的,判断一个条件是否成立,就是这个条件是“真”(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. shell-day1

    shell概述:这里说的是命令行shell,例如"bash/sh/ksh/csh"(Unix/Linux系统).cmd.exe命令提示字符(windwos系统),这里主要介绍Uni ...

  2. 在Clion里链接gtest

    本来以为像之前链接boost一样,加个链接路径就好了,没想到报找不到gtest的符号,搞了半天,没弄明白啥原因. 网上也没搜到好方法,只能把gtest的源码加到项目里,然后在链接了. CMake配置如 ...

  3. Python列表生成式(入门9)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6407984.html 本文出自:[Edwin博客园] Python列表生成式 1. 生成列表 L = [] ...

  4. bootstrap Switch 的一个坑点

    在bootstrap的modal点开的时候改变bootstrapSwitch的状态的时候,会出现第一次打开modal,switch没有变化,第二次以后打开modal才会改变,这个问题找了好久没有找到答 ...

  5. xtrabackup2.4选项参考

    该xtrabackup2.4选项参考¶ 此页面记录了xtrabackup二进制文件的所有命令行选项 . 选项 --apply-log-only 此选项仅在准备备份时执行重做阶段.这对增量备份非常重要. ...

  6. centos 在安装YouCompleteMe时提示 Fatal : pyconfig.h No such file or directory

    问题:centos 在安装YouCompleteMe时提示 Fatal : pyconfig.h No such file or directory 解决:安装python-devel yum ins ...

  7. python-二维数组实现90度旋转

    本篇主要介绍了对一个N*N的数组,如果进行90度的旋转 首先,定义一个一维数组很简单,如下: a = [i for i in range(10)] print(a) -----结果----- 0, 1 ...

  8. layUI不同页面传参数

    //页面一的方法 function modifyHotSearch(id){ layer.open({ type:2, title:"修改热门搜索", area: ['600px' ...

  9. 算法 - 给出一个字符串str,输出包含两个字符串str的最短字符串,如str为abca时,输出则为abcabca

    今天碰到一个算法题觉得比较有意思,研究后自己实现了出来,代码比较简单,如发现什么问题请指正.思路和代码如下: 基本思路:从左开始取str的最大子字符串,判断子字符串是否为str的后缀,如果是则返回st ...

  10. hdu 1520 Anniversary party(第一道树形dp)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1520 Anniversary party Time Limit: 2000/1000 MS (Java ...