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全部转换为小写,两个字符串构成相等
 1 #比较数字
 2 x = 10
 3 y = 3
 4 z = 7
 5 #条件 y > z 为 False 整个条件返回 False,将被忽略
 6 if x > y and y > z :
 7     print('x大于y 并且 y大于z')
 8 #两个条件都为 True,整个条件返回 True,执行print代码块
 9 if x > y and z > y :
10     print('x大于y 并且 z大于y')
11 #将第六行代码中的 and 改为 or x > y 返回 True 有一个条件满足 True,整个条件返回 True
12 if x > y or y > z :
13     print('x大于y 或者 y大于z')
14 #将两个条件为 false 使用 or 连接 ,整个条件返回 False if语句块将不被执行
15 if x < y or y > z :
16     print('这行代码两边条件为False,将被忽略')

输出结果为:

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

5.3 if语句

5.3.1 简单的if语句

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

输出结果:

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

5.3.2 if - else语句

  • 需要在条件满足时执行一个条件满足时执行一个操作,不满足时执行另一个操作。
1 age = 17
2 if age >= 18 :
3     print('你已经年满18,可以上网吧!')
4 else:
5     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 '''
 2 1.4岁以下免费入内
 3 2.4-18岁收费20
 4 3.18岁以上收费40
 5 '''
 6 age = 12
 7 if age < 4 :
 8     print('免费入内')
 9 elif age <= 18 :
10     print('收费20')
11 else:
12     print('收费40')

输出结果:

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

5.3.4 使用多个elif代码块

  • 进行多个条件测试
1 age = 70
2 if age < 4 :
3     print('免费入内')
4 elif age <= 18 :
5      print('收费20')
6 elif age < 65:
7     print('收费40')
8 else:
9     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语句
1 A = [3,6,9]
2 if 3 in A :
3     print('3在列表A中')
4 elif 6 in A :
5     print('6在列表A中')
6 elif 9 in A :
7     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 检查特殊元素

1 Name_list =['admin','rao','zhang','li','yu']
2 for Name in Name_list:
3     if Name == 'admin':
4         print('hello '+Name.title()+',would you like to play fifa20?')
5     else:
6         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
1 Name_list =[]
2 if Name_list:
3    for Name in Name_list:
4        print('我们的用户是:'+Name)
5 else:
6     print('我们需要一些用户!')

输出结果为:

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

5.4.3 使用多个列表

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

输出结果为:

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

输出结果为:

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

5.5 设置if语句格式

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

猜你喜欢

转载自www.cnblogs.com/raoqinglong/p/11519290.html