python教程(二)·条件语句
条件语句一般用来判断给定的条件是否成立,根据结果来执行不同的代码,也就是说,有了条件语句,才可以根据不同的情况做不同的事,从而控制程序的流程。
布尔类型
前面说到数据类型的时候,其中有一种叫 “布尔” 的类型,对于读者们来说应该有一点困惑的,作者当初接触到布尔类型的时候也想过:
“这东西能有什么用?”
其实,布尔类型和条件语句是密不可分的,判断一个条件是否成立,就是这个条件是“真”(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岁不到的小孩,无忧无虑
比较运算符
通常在写代码中很少直接出现布尔值True
和False
,而是通过比较运算得出来的,像上面的>=
、>
就是比较运算符了,下面是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教程(二)·条件语句的更多相关文章
- Python基础之条件语句和循环
条件语句 Python中的条件语句分为 if ...else . if ...elif...else 以及if ...else 的嵌套使用: username = input('请输入您的用户名:' ...
- 【Python】-NO.99.Note.4.Python -【Python3 条件语句 循环语句】
1.0.0 Summary Tittle:[Python]-NO.99.Note.4.Python -[Python3 条件语句 循环语句] Style:Python Series:Python Si ...
- Python编程基础[条件语句if 循环语句 for,while](二)
ython条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: if 判断条件: 执行语句……else: 执行语句…… x= ...
- python学习-4 python基础-2 条件语句(if的简单用法1)
条件语句的原理: 2.举个例子:比大小 #!/usr/bin/env python # -*- coding:utf8 -*- a=input("请输入a:") b=input(& ...
- python流程控制-条件语句If,while循环
一.If,条件语句-选择 格式:python简洁优美,注意缩进 1.第一种: if 条件: 四个空格(tab键) 满足条件时的执行步骤 if 5>4 : print(666) print(77 ...
- 04 . Python入门之条件语句
一. Python条件语句 Python条件语句是通过一条或多条语句执行结果(True或False)来决定执行的代码块. 可以通过下图简单了解语句的执行过程 Python程序语言指定任何非0和非空(n ...
- 【Python】解析Python中的条件语句和循环语句
1.if语句 if语句有好几种格式,比如: if condition: statement 使用 if ... else ...: if condition: statement(1) else: s ...
- python学习之条件语句(if循环)
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块.可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非空(null)值为tru ...
- python的if条件语句的语法和案例
1.条件语句 缩进用4个空格 if条件: #条件成功, else: #条件不成功 if条件:{ #条件成功, #条件成功, }else{ #条件不成功, #条件不成功, } if的语法就是这样或者是用 ...
- Python基础、条件语句和基本数据类型
1. 第一句python - 后缀名是可以是任意? - 导入模块时,如果不是.py文件 ==> 以后文件后缀名是 .py 2. 两种执行方式 python解释器 py文件路径 python 进入 ...
随机推荐
- RuntimeBroker ClipboardBroker EoP
datetime: 2017.04.28 漏洞简介 随着沙箱技术的普及,现在主流的操作系统及软件都开始支持沙箱,以此来缓解层出不穷的远程代码执行漏洞对系统造成的危害.AppContainer是自Win ...
- CSS position属性 标签: css 2016-09-06 15:58 78人阅读 评论(0) 收藏
踩了position的坑,主要是因为对position属性理解不深. 以下是w3school中对position的解释: 可能的值 值 描述 absolute 生成绝对定位的元素,相对于 static ...
- windows server 2003安装Oracle webtier 32位因环境变量原因报错
在服务中启动Oracle processer manager时报错:错误1053:服务没有及时响应启动或控制请求 原因是本系统还安装过BI和Oracle数据库等产品 解决方法:删除和本次安装无关的环境 ...
- 什么是SAP GUI的client
我们用SAPGUI登录某个系统时,除了用户名和密码外,还要指定一个必填字段client: 这个client是什么东东? 看文档: SAP Client is the highest hierarchi ...
- 理解Underscore中的uniq函数
uniq函数,是Underscore中的一个数组去重函数,给它传递一个数组,它将会返回该数组的去重副本. 1 ES6版本去重 在ES6版本中,引入了一个新的数据结构——set,这是一种类似数组的数据结 ...
- CF739B Alyona and a tree
嘟嘟嘟 前缀和+倍增+树上差分 假设\(v\)是\(u\)子树中的一个点,那么\(u\)能控制\(v\)的条件是受\(v\)的权值的限制,而并非\(u\).因此我们就能想到计算每一个点的贡献,即\(v ...
- 使用QT开发GoogleMap瓦片显示和下载工具(2)——Google地图瓦片投影和获取网址解析
这篇主要说的是Google地图采用的投影方式,瓦片划分方式以及如何从给定的经纬度获取瓦片的数据的网址.所有资料均来自于网络,并亲自试验可行. Google地图投影 首先是地图投影问题,因为地球本身是一 ...
- 使用SuperMap Deskpro 6R.NET生成地图缓存
使用说明 “地图缓存”按钮,用来对二维地图数据生成缓存文件,优化地图的浏览效果. 操作步骤 1.单击功能区>“数据”选项卡>“生成缓存”组中的“地图缓存”按钮. 2.弹出如下所示“生成地图 ...
- springmvc错误集锦-dubbo包含低版本的spring包,依赖的时候应该排除Caused by: java.lang.reflect.MalformedParameterizedTypeException
dubbo 常见错误 1. Caused by: java.lang.reflect.MalformedParameterizedTypeException 启动时报错,原因是dubbo 依赖 spr ...
- UI到底应该用xib/storyboard完成,还是用手写代码来完成?
UI到底应该用xib/storyboard完成,还是用手写代码来完成? 文章来源:http://blog.csdn.net/libaineu2004/article/details/45488665 ...