第5章 if 语句

5.1 一个简单的示例

  • 使用前面的解析列表构建一个0-9的数值列表。
  • 判断0是否在列表中,如果在输出 0在列表A中
A = [i for i in range(0,10)]
if 0 in A:
print('0在列表A中')

结果为:

0在列表A中

5.2 条件测试

  • 每条if语句的 核心 都是一个值为 True 或 False 的表达式,这种表达式被称为条件测试。
  • 如果条件表达式输出的结果为True则执行if语句中的代码块,如果输出的结果为False则忽略if语句中的代码块。

5.2.1 检查是否相等

  • 使用两个等号 == 来检查是否相等,== 称为相等运算符。
  • 一个 =  是陈述,A = ‘b’ ;两个等号 == 是发问,两边是否相等?
  • 构建一个变量A = 6,然后检查一个6和一个3,输出结果。
A = 6
if A == 6 :
print('变量A表示数值6')
if A == 3 :
print('变量A表示数值3')

输出结果为:

变量A表示数值6
  • 在上述代码中,因为第一个条件测试结果为True执行代码块输出 变量A表示数值6;第二个条件测试返回结果为False,则忽略代码块。

5.2.2 检查是否相等时不考虑大小写

  • python中检查是否相等时是 区分大小写的。
  • 我们创建两个字符串 一个为 rao 一个为首字母大写 Rao,使用条件测试检查是否相等。
Name = 'rao'
Name1 = 'Rao'
if Name == Name1:
print('不用区分大小写')
else :
print('需要区分大小写')

输出结果为:

需要区分大小写
  • 可以看到上述代码中,if语句条件测试返回False 所以不执行,而执行了相等意外的 else 下面代码块。

5.2.3 检查是否不相等

  • 检查是否不相等时,需要使用惊叹号加等号的 不相等运算符 !=,其中惊叹号表示不。
  • 我们先存一个变量 Pay_style = '微信支付',然后设置if语句为如果不等于 ‘支付宝支付’,那么输出请收回支付宝二维码
Pay_style = '微信支付'
if Pay_style != '支付宝支付':
print('请收回支付宝二维码')

输出结果为:

请收回支付宝二维码
  • 在上述代码中,第一步我们构建了一个 变量 内容为 微信支付 的字符串
  • if语句价差是否不相等 使用 != 变量不等于 支付宝支付 返回结果为True 执行if 包含语句块
  • 结果为 输出 请收回支付宝二维码

5.2.4 比较数字

  • 数字比较符 == 等于   != 不等于   >大于   <小于   >= 大于等于   <= 小于等于

5.2.5 检查多个条件

  • 使用and和or帮助检查多个条件的返回结果是否合意(符合程序员需求)

1. 使用and检查多个条件

  • 使用 and 连接条件时 需要 and 两边的条件都为True,则整个条件语句返回True。

  • 使用 and 两边任意一个不满足条件 则返回False

  • 我们设置两个数值  5 11 我们使用 and 连接条件 测试

Num1 = 5
Num2 = 11
if Num1 == 5 and Num2 == 11:
print('符合条件')
if Num1 == 5 and Num2 == 10:
print('符合条件')

输出结果:

符合条件
  • 我们可以看到结果只输出了一个 符合条件,那么肯定是其中有一个条件测试返回的是False
  • 第一个if语句 判断Num1 等于 5 并且 Num2 等于 11,两边条件都为True,则整个条件测试返回True,执行if下代码块。
  • 第二个if语句 两个条件中 Num2 等于 10 明显错误,在使用 and 时有任意一个不满足条件 则返回False 忽略第二个if下的代码块

5.2.6 检查特定值是否包含在列表中

  • 语法 if i in seq : 关键字为in
  • 文章开头的第一个代码使用了关键字 in 检查了0是否在列表中
A = [i for i in range(0,10)]
if 0 in A:
print('0在列表A中')

5.2.7 检查特定值是否不包含在列表中

  • 语法 if i not in seq :关键字 not in
  • 我们修改下上述代码 将0替换为10 将 in 改为 not in
  • 当测试条件为真的时候 让程序输出 10不在列表A中
A = [i for i in range(0,10)]
if 10 not in A:
print('10不在列表A中')

输出结果为:

10不在列表A中
  • 因为条件 10 not in A 这个条件返回的是True ,执行了if语句下的语句块 输出了 10不在列表A中 的结果。

5.2.8 布尔表达式

  • 布尔表达式是条件测试的别名,返回结果要么为 True 要么为 False
if True:
print('布尔表达式结果为True时')
if False:
print('布尔表达式为False时,不会执行这行代码')

输出结果为:

布尔表达式结果为True时

练习:

#检查是否相等的测试代码
Name = 'david beckham'
Name1 = 'David Beckham'
if Name == Name1:
print('两个名称相等')
if Name != Name1:
print('两个名称不相等')
if Name == Name1.lower():
print('将字符串Name1全部转换为小写,两个字符串构成相等')

输出结果为:

两个名称不相等
将字符串Name1全部转换为小写,两个字符串构成相等
 #比较数字
x = 10
y = 3
z = 7
#条件 y > z 为 False 整个条件返回 False,将被忽略
if x > y and y > z :
print('x大于y 并且 y大于z')
#两个条件都为 True,整个条件返回 True,执行print代码块
if x > y and z > y :
print('x大于y 并且 z大于y')
#将第六行代码中的 and 改为 or x > y 返回 True 有一个条件满足 True,整个条件返回 True
if x > y or y > z :
print('x大于y 或者 y大于z')
#将两个条件为 false 使用 or 连接 ,整个条件返回 False if语句块将不被执行
if x < y or y > z :
print('这行代码两边条件为False,将被忽略')

输出结果为:

x大于y 并且 z大于y
x大于y 或者 y大于z

5.3 if语句

5.3.1 简单的if语句

 age = 19
if age >=18 :
print('你已经成年,可以去网吧上网了!')

输出结果:

你已经成年,可以去网吧上网了!
  • 第1行 将数值19 存储在变量 age 中
  • 第2行 进行条件测试,变量是否大于等于18,条件满足返回True。执行if后面缩进的代码块。
  • 第3行 输出 你已经成年,可以去网吧上网了!

5.3.2 if - else语句

  • 需要在条件满足时执行一个条件满足时执行一个操作,不满足时执行另一个操作。
 age = 17
if age >= 18 :
print('你已经年满18,可以上网吧!')
else:
print('未满18,网吧禁止入内!')
未满18,网吧禁止入内!
  • 第1行 将数值 17 存贮为变量 age
  • 第2行 if 语句进行条件测试 17 不满足 大于等于 18
  • 第3行 因为第二行条件测试返回结果为 False 所以不执行
  • 第4行 不满足条件的执行else操作
  • 第5行 执行else下的操作 输出  未满18,网吧禁止入内!

5.3.3 if - elif - else结构

  • 用于检查超过两个条件,python只执行结构中的一个代码。

  • 它依次检查每个条件测试,直到遇到通过了的条件测试。
  • 测试通过后,python将执行紧跟在他后面的代码,并跳过余下测试。
 '''
1.4岁以下免费入内
2.4-18岁收费20
3.18岁以上收费40
'''
age = 12
if age < 4 :
print('免费入内')
elif age <= 18 :
print('收费20')
else:
print('收费40')

输出结果:

收费20
  • 第6行 将数值 12 存储为变量 age
  • 第7行 进行第一个条件测试 测试 age 是否小于 4,通过则执行输出 免费入内
  • 第8行 这行被忽略因此我们知道age肯定大于或者等于 4
  • 第9行 因为第一个条件测试没有通过,程序跳到第9行 测试条件是否满足小于等于18
  • 第10行 满足条件执行操作 输出 收费20
  • 第11行 因为已经有通过条件,跳过了余下测试。

5.3.4 使用多个elif代码块

  • 进行多个条件测试
 age = 70
if age < 4 :
print('免费入内')
elif age <= 18 :
print('收费20')
elif age < 65:
print('收费40')
else:
print('老人免费')

输出结果:

老人免费
  • 第1行 将数值70存储到变量age中
  • 第2行 判断条件 age 是否小于 4 测试不通过 进入下一个条件测试
  • 第4行 判断条件 age 是否小于等于18 测试不通过 进入下一个条件测试
  • 第6行 判断条件 age 是否小于 65 测试不通过 进行到else
  • 第9行 因为前面 if 和 elif 中的条件测试都未通过 则执行 输出 老人免费

5.3.5 省略 else 代码块

  • else 是一条包罗万象的语句,一切不满足if elif的条件测试 都会由else来执行
  • 但是同时我们要意识到 elif 条件更清晰 使用else也会引来 无效数据或者恶意数据
  • python 中并不要求if 后面必须要有else语句

5.3.6 测试多个条件

  • 使用 if elif 条件语句仅适合于满足一个条件的测试中。
  • 当你需要满足多个条件时,应该使用一系列不包含elif 和else代码块的简单if语句
 A = [3,6,9]
if 3 in A :
print('3在列表A中')
elif 6 in A :
print('6在列表A中')
elif 9 in A :
print('9在列表A中')

输出结果为:

3在列表A中
  • 第1行 创建一个数值列表A 包含3,6,9
  • 第2行 条件测试 3是否在列表A中
  • 第3行 判断通过输出 3在列表A中同时跳过余下测试
  • 所以尽管 第4 和 第6行的判断结果为True也不会输出任何结果
  • 我们修改下 将elif改为if
A = [3,6,9]
if 3 in A :
print('3在列表A中')
if 6 in A :
print('6在列表A中')
if 9 in A :
print('9在列表A中')

输出结果为:

3在列表A中
6在列表A中
9在列表A中
  • 总之如果你想执行一个代码块,就使用 if elif else 结构,如果你要运行多个代码块,就使用一系列独立的if语句。

5.4 使用if语句处理表格

5.4.1 检查特殊元素

 Name_list =['admin','rao','zhang','li','yu']
for Name in Name_list:
if Name == 'admin':
print('hello '+Name.title()+',would you like to play fifa20?')
else:
print('hello '+Name.title()+',nice to meet you!')

输出结果为:

hello Admin,would you like to play fifa20?
hello Rao,nice to meet you!
hello Zhang,nice to meet you!
hello Li,nice to meet you!
hello Yu,nice to meet you!
  • 第1行 创建一个列表 五个用户名。
  • 第2行 用for循环遍历列表
  • 第3行 判断遍历得来变量存储的值是否为 admin
  • 第4行 当上面判断为True时 输出  hello Admin,would you like to play fifa20?
  • 第5行 当第一个条件不通过时,执行else代码下操作
  • 这个时候有好学的朋友就会问,上面说if elif下只能满足一个条件,各位for循环遍历的时候每次只传入一个值,循环着的传。

5.4.2 确定列表不是空的

  • 使用if 判断列表是否为空列表 当列表为空列表式 判断结果将为False 当列表包含至少一个元素时,返回True
 Name_list =[]
if Name_list:
for Name in Name_list:
print('我们的用户是:'+Name)
else:
print('我们需要一些用户!')

输出结果为:

我们需要一些用户!
  • 第1步 创建一个空列表Name_list
  • 第2行 判断条件 因为Name_list 是空列表,所以返回结果为False,紧跟if语句的操作将被忽略
  • 第5行 因为if下的语句没有通过条件测试 将执行else语句下的代码
  • 第6行 输出 我们需要一些用户!

5.4.3 使用多个列表

 Name_list =['admin','rao','zhang','li','yu']
Users_Name = ['rao','zhang','li','hu']
for user in Users_Name:
if user in Name_list:
print('对不起,名称:'+user+' 已经被使用,请重新输入!')
else :
print('该名称:'+user+' 还未注册,快点注册吧!')

输出结果为:

对不起,名称:rao 已经被使用,请重新输入!
对不起,名称:zhang 已经被使用,请重新输入!
对不起,名称:li 已经被使用,请重新输入!
该名称:hu 还未注册,快点注册吧!
  • 书中有一个练习题的要求是如果Rao在Namelist中 那么 user 中 rao也不允许注册,就是说两个列表字符串全部转换为小写字母字符串。
  • 我们可以使用列表解析方法将两个列表转换为小写比较。
 Name_list =[Name.lower() for Name in ['admin','Rao','zhang','li','yu']]
Users_Name = [user.lower() for user in['rao','Zhang','Li','hu']]
for user in Users_Name:
if user in Name_list:
print('你要注册的用户名称:'+user+' 已经被注册了!')
else :
print('恭喜你,用户名 '+user+' 还未被注册')

输出结果为:

你要注册的用户名称:rao 已经被注册了!
你要注册的用户名称:zhang 已经被注册了!
你要注册的用户名称:li 已经被注册了!
恭喜你,用户名 hu 还未被注册

5.5 设置if语句格式

  • 妥善的使用空格 使代码看起来更加清晰易读美观,特别是在使用运算符 和 比较符的时候

python自学Day04(自学书籍python编程从入门到实践)的更多相关文章

  1. 《Python编程:从入门到实践》分享下载

    书籍信息 书名:<Python编程:从入门到实践> 原作名:Python Crash Course 作者: [美] 埃里克·马瑟斯 豆瓣评分:9.1分(2534人评价) 内容简介 本书是一 ...

  2. 《python编程从入门到实践》2.3字符串

    书籍<python编程从入门到实践> 2.3字符串 知识模块 print()函数,函数名称突出为蓝色,输出括号内的变量或者字符创. 变量名的命名:尽量小写字母加下划线并且具有良好的描述性, ...

  3. Python编程从入门到实践笔记——异常和存储数据

    Python编程从入门到实践笔记——异常和存储数据 #coding=gbk #Python编程从入门到实践笔记——异常和存储数据 #10.3异常 #Python使用被称为异常的特殊对象来管理程序执行期 ...

  4. Python编程从入门到实践笔记——文件

    Python编程从入门到实践笔记——文件 #coding=gbk #Python编程从入门到实践笔记——文件 #10.1从文件中读取数据 #1.读取整个文件 file_name = 'pi_digit ...

  5. Python编程从入门到实践笔记——类

    Python编程从入门到实践笔记——类 #coding=gbk #Python编程从入门到实践笔记——类 #9.1创建和使用类 #1.创建Dog类 class Dog():#类名首字母大写 " ...

  6. Python编程从入门到实践笔记——函数

    Python编程从入门到实践笔记——函数 #coding=gbk #Python编程从入门到实践笔记——函数 #8.1定义函数 def 函数名(形参): # [缩进]注释+函数体 #1.向函数传递信息 ...

  7. Python编程从入门到实践笔记——用户输入和while循环

    Python编程从入门到实践笔记——用户输入和while循环 #coding=utf-8 #函数input()让程序暂停运行,等待用户输入一些文本.得到用户的输入以后将其存储在一个变量中,方便后续使用 ...

  8. Python编程从入门到实践笔记——字典

    Python编程从入门到实践笔记——字典 #coding=utf-8 #字典--放在{}中的键值对:跟json很像 #键和值之间用:分隔:键值对之间用,分隔 alien_0 = {'color':'g ...

  9. Python编程从入门到实践笔记——if语句

    Python编程从入门到实践笔记——if语句 #coding=utf-8 cars=['bwm','audi','toyota','subaru','maserati'] bicycles = [&q ...

  10. Python编程从入门到实践笔记——操作列表

    Python编程从入门到实践笔记——操作列表 #coding=utf-8 magicians = ['alice','david','carolina'] #遍历整个列表 for magician i ...

随机推荐

  1. 一个排查了大半天儿的问题,差点又让 MyBatis 背锅

    我是风筝,公众号「古时的风筝」,一个不只有技术的技术公众号,一个在程序圈混迹多年,主业 Java,另外 Python.React 也玩儿的 6 的斜杠开发者. Spring Cloud 系列文章已经完 ...

  2. 开源电影项目源码案例重磅分析,一套代码发布小程序、APP平台多个平台

    uni-app-Video GitHub地址:https://github.com/Tzlibai/uni-app-video 一个优秀的uni-app案例,旨在帮助大家更快的上手uni-app,共同 ...

  3. 轻量级熔断降级框架 alibaba sentinel 应用

    一.简介: wiki:https://github.com/alibaba/Sentinel/wiki 选择: ♥ 开源,成熟(功能完备.实际应用),活跃(功能维护及拓展) ♥ 更轻量:依赖资源少:a ...

  4. SpringMvc上传图片及表单提交(单文件+实体类参数提交)

    前两天做项目用到了Springmvc的文件上传来上传图片,由于和这个普通的Java文件上传处理流程不太一样,所以做的时候碰了壁,一顿百度,博客,要不就是一部分代码,要不就是看不懂,用不会的代码,下面来 ...

  5. slf4j、log4j、 logback关系详解和相关用法

    slf4j log4j logback关系详解和相关用法 写java也有一段时间了,一直都有用slf4j log4j输出日志的习惯.但是始终都是抱着“拿来主义”的态度,复制粘贴下配置文件就开始编码了, ...

  6. 深入理解Java虚拟机(1)

        对于Java程序员,在虚拟机自动内存管理机制的帮助下,不需要再为每一个操作写配对的释放资源操作,不容易出现内存泄露和内存溢出问题.加深对Java虚拟机的理解,有助于在发现问题时精准定位问题,排 ...

  7. Pyqt5_Python运用过程中一些问题和技巧

    安装python3&pyqt5 1.         网下载python3.7安装包,安装时选择自定义安装,勾选上PIP 直接去官网上下载,一路下一步就可以了,然后将D:\Python37.D ...

  8. 网络编程杂谈之TCP协议

    TCP协议属于网络分层中的传输层,传输层作用的就是建立端口与端口的通信,而其下一层网络层的主要作用是建立"主机到主机"的通信,所以在我们日常进行网络编程时只要确定主机和端口,就能实 ...

  9. 如何利用CSS选择器抓取京东网商品信息

    前几天小编分别利用Python正则表达式.BeautifulSoup.Xpath分别爬取了京东网商品信息,今天小编利用CSS选择器来为大家展示一下如何实现京东商品信息的精准匹配~~ CSS选择器 目前 ...

  10. PHP相关_几个操作记录下

    1.JSON转换 var cloneTesttaskList = <?php echo json_encode(json_encode($cloneTesttaskList));?>; v ...