python自学Day04(自学书籍python编程从入门到实践)
第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编程从入门到实践)的更多相关文章
- 《Python编程:从入门到实践》分享下载
书籍信息 书名:<Python编程:从入门到实践> 原作名:Python Crash Course 作者: [美] 埃里克·马瑟斯 豆瓣评分:9.1分(2534人评价) 内容简介 本书是一 ...
- 《python编程从入门到实践》2.3字符串
书籍<python编程从入门到实践> 2.3字符串 知识模块 print()函数,函数名称突出为蓝色,输出括号内的变量或者字符创. 变量名的命名:尽量小写字母加下划线并且具有良好的描述性, ...
- Python编程从入门到实践笔记——异常和存储数据
Python编程从入门到实践笔记——异常和存储数据 #coding=gbk #Python编程从入门到实践笔记——异常和存储数据 #10.3异常 #Python使用被称为异常的特殊对象来管理程序执行期 ...
- Python编程从入门到实践笔记——文件
Python编程从入门到实践笔记——文件 #coding=gbk #Python编程从入门到实践笔记——文件 #10.1从文件中读取数据 #1.读取整个文件 file_name = 'pi_digit ...
- Python编程从入门到实践笔记——类
Python编程从入门到实践笔记——类 #coding=gbk #Python编程从入门到实践笔记——类 #9.1创建和使用类 #1.创建Dog类 class Dog():#类名首字母大写 " ...
- Python编程从入门到实践笔记——函数
Python编程从入门到实践笔记——函数 #coding=gbk #Python编程从入门到实践笔记——函数 #8.1定义函数 def 函数名(形参): # [缩进]注释+函数体 #1.向函数传递信息 ...
- Python编程从入门到实践笔记——用户输入和while循环
Python编程从入门到实践笔记——用户输入和while循环 #coding=utf-8 #函数input()让程序暂停运行,等待用户输入一些文本.得到用户的输入以后将其存储在一个变量中,方便后续使用 ...
- Python编程从入门到实践笔记——字典
Python编程从入门到实践笔记——字典 #coding=utf-8 #字典--放在{}中的键值对:跟json很像 #键和值之间用:分隔:键值对之间用,分隔 alien_0 = {'color':'g ...
- Python编程从入门到实践笔记——if语句
Python编程从入门到实践笔记——if语句 #coding=utf-8 cars=['bwm','audi','toyota','subaru','maserati'] bicycles = [&q ...
- Python编程从入门到实践笔记——操作列表
Python编程从入门到实践笔记——操作列表 #coding=utf-8 magicians = ['alice','david','carolina'] #遍历整个列表 for magician i ...
随机推荐
- 一个排查了大半天儿的问题,差点又让 MyBatis 背锅
我是风筝,公众号「古时的风筝」,一个不只有技术的技术公众号,一个在程序圈混迹多年,主业 Java,另外 Python.React 也玩儿的 6 的斜杠开发者. Spring Cloud 系列文章已经完 ...
- 开源电影项目源码案例重磅分析,一套代码发布小程序、APP平台多个平台
uni-app-Video GitHub地址:https://github.com/Tzlibai/uni-app-video 一个优秀的uni-app案例,旨在帮助大家更快的上手uni-app,共同 ...
- 轻量级熔断降级框架 alibaba sentinel 应用
一.简介: wiki:https://github.com/alibaba/Sentinel/wiki 选择: ♥ 开源,成熟(功能完备.实际应用),活跃(功能维护及拓展) ♥ 更轻量:依赖资源少:a ...
- SpringMvc上传图片及表单提交(单文件+实体类参数提交)
前两天做项目用到了Springmvc的文件上传来上传图片,由于和这个普通的Java文件上传处理流程不太一样,所以做的时候碰了壁,一顿百度,博客,要不就是一部分代码,要不就是看不懂,用不会的代码,下面来 ...
- slf4j、log4j、 logback关系详解和相关用法
slf4j log4j logback关系详解和相关用法 写java也有一段时间了,一直都有用slf4j log4j输出日志的习惯.但是始终都是抱着“拿来主义”的态度,复制粘贴下配置文件就开始编码了, ...
- 深入理解Java虚拟机(1)
对于Java程序员,在虚拟机自动内存管理机制的帮助下,不需要再为每一个操作写配对的释放资源操作,不容易出现内存泄露和内存溢出问题.加深对Java虚拟机的理解,有助于在发现问题时精准定位问题,排 ...
- Pyqt5_Python运用过程中一些问题和技巧
安装python3&pyqt5 1. 网下载python3.7安装包,安装时选择自定义安装,勾选上PIP 直接去官网上下载,一路下一步就可以了,然后将D:\Python37.D ...
- 网络编程杂谈之TCP协议
TCP协议属于网络分层中的传输层,传输层作用的就是建立端口与端口的通信,而其下一层网络层的主要作用是建立"主机到主机"的通信,所以在我们日常进行网络编程时只要确定主机和端口,就能实 ...
- 如何利用CSS选择器抓取京东网商品信息
前几天小编分别利用Python正则表达式.BeautifulSoup.Xpath分别爬取了京东网商品信息,今天小编利用CSS选择器来为大家展示一下如何实现京东商品信息的精准匹配~~ CSS选择器 目前 ...
- PHP相关_几个操作记录下
1.JSON转换 var cloneTesttaskList = <?php echo json_encode(json_encode($cloneTesttaskList));?>; v ...