条件控制语句 if-else
首先来看一个简单的例子:设计一个程序比较两个数 A 和 B 的大小,如果 A 和 B 不相等则打印较大数的值,如果相等则打印 A。
Python 代码如下:
if A >= B:
print('The larger number is:',A)
else:
print('The larger number is:',B) //更多Python学习资料可以私信关键字【资料】领取
上面只是一个很简单的实例,一般地,Python 条件控制语句的形式为:
if Condition1:
Action1
elif Condition2:
Action2
else:
Action3 //更多Python学习资料可以私信关键字【资料】领取
上面的代码表示:
- 如果 Condition1 为True,将执行 Action1;
- 如果 Condition1 为False,将继续判断 Condition2;
- 如果 Condition2 为True,将执行 Action2;
- 如果 Condition2 为False,将执行 Action3。
注意要点
- 每个条件后面要使用冒号 :,冒号后的内容表示满足条件后要执行的语句块。
- 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块(IDE 会自动缩进)。
- 在 Python 中没有 switch–case 语句。
条件控制语句实例
实例1:从控制台输入两个数字 A、B,判断大小后输出较大数字,如果相等则输出提示和数值。
#从控制台输入数据默认为字符串类型,需要强制转换为int类型
A = int(input("Please enter the number A:"))
B = int(input("Please enter the number B:"))
if A > B:
print('The larger number is:',A)
elif A == B:
print('A and B are equal to ',A)
else:
print('The larger number is:',B)
执行结果:
Please enter the number A:123
Please enter the number B:456
The larger number is: 456
实例2:从控制台输入学号,如果学号正确则输出考试成绩;如果学号有误,输出报错提示。
#创建一个“学号-成绩”字典
exam_results = {'2018002':95,'2018013':'90','2018023':87}
#接收从控制台输入的学号,默认为字符串类型
stu_num = input("Please enter the student number:")
#删除输入学号首尾空格,避免影响查询
stu_num = stu_num.strip()
#判断输入的学号是否存在于“学号-成绩”字典中
if stu_num in exam_results.keys():
print('Your score is :',exam_results.get(stu_num))
else:
print('The student number you entered is incorrect!')
执行结果:
Please enter the student number:2018002
Your score is : 95
for 循环语句
Python 中有两种循环语句,for 循环和 while 循环,本节先介绍 for 循环。一般,我们通过 for 循环来遍历序列中的项目,这里序列包括但不限于字符串、列表、元组、字典。
for循环的一般形式如下:
for <item> in <sequence>:
<actions>
当 <item> in <sequence> 为 True 时,执行 <actions>。
实例1:求一组数据的平均值。
#测试数据集
num_set = [98,94,82,67,58,90,86]
sumOfNum = 0
#遍历列表中的元素,求和
for element in num_set:
sumOfNum += element
#求平均值并打印结果
average = sumOfNum/len(num_set)
print("The average is:%f"%(average))
执行结果:
The average is:82.142857
实例2:通过 range() 函数遍历数据序列,range() 函数可以生成数列,将生成的数列作为索引,我们可以遍历数字序列。range() 函数的参数是可变的:
- range(n):生成步长为1的数列:1,2,3……n;
- range(m, n):生成步长为1的数列:m,m+1,m+2,……,n;
- range(m, n, s):生成步长为s的数列:m,m+s,m+2s,……,X(<=n)
for index in range(4):
print("index:",index)
执行结果:
index: 0
index: 1
index: 2
index: 3
实例3:for 循环结合 range() 遍历数据序列。
#测试数据集
city_set = ['BeiJin','TianJin','ShangHai','HangZhou','SuZhou']
#索引从0开始,以步长2遍历
for index in range(0,len(city_set),2):
print("city_set[%d]:%s"%(index,city_set[index]))
执行结果:
city_set[0]:BeiJin
city_set[2]:ShangHai
city_set[4]:SuZhou
while 循环与 for 循环不同,while 循环不是采用遍历数据序列的方式来进行循环操作的,其循环的依据是条件判断,while 循环的一般形式如下,即当 condition 为 True,则执行 Action,否则退出。while Conditon:
Action
实例1:求一组数据的平均值。
#初始化测试数据
num_set = [98,94,82,67,58,90,86]
sumOfNum = 0
index = 0
while index < len(num_set):
sumOfNum += num_set[index]
index += 1
#求平均值并打印结果
average = sumOfNum/len(num_set)
print("The average is:%f"%(average))
执行结果:
The average is:82.142857
break 语句
break 语句用于跳出 for 和 while 循环体,也就意味着循环结束。如下例子:检测数据集中是否存在小于60的数字,存在则打印提示信息并终止。
#初始化测试数据
num_set = [98,94,82,67,58,90,86]
for i in range(len(num_set)):
if num_set[i] < 60:
print("Someone failed!")
break
else:
print(num_set[i])
执行结果:
98
94
82
67
Someone failed!
在实际应用中,break 语句经常和 while 语句结合使用,当条件满足的时候跳循环。如下例子:while True:
a = input('Please enter a number:')
if int(a) > 100:
print('error!!!')
break
else:
print(a)
执行结果:
Please enter a number:23
23
Please enter a number:45
45
Please enter a number:101
error!!!
continue 语句与 break 不同,continue 不会退出循环体,而是跳过当前循环块的剩余语句,继续下一轮循环。如下例子:遍历数据集,遇到小于60的数据打印提示。
#初始化测试数据
num_set = [98,94,82,67,58,90,86]
for i in range(len(num_set)):
if num_set[i] < 60:
print("Someone failed!")
continue
print(num_set[i])
执行结果:
98
94
82
67
Someone failed!
90
86
Pass 语句Python pass 是空语句,一般用做占位,不执行任何实际的操作,只是为了保持程序结构的完整性。为了直观,举一个不是很恰当的实例:#初始化测试数据
num_set = [98,82,67,58,90]
for i in range(len(num_set)):
if num_set[i] < 60:
print("Someone failed!")
pass
print(num_set[i])
执行结果:
98
82
67
Someone failed!
58
90
Pass 语句
Python pass 是空语句,一般用做占位,不执行任何实际的操作,只是为了保持程序结构的完整性。为了直观,举一个不是很恰当的实例:
#初始化测试数据
num_set = [98,82,67,58,90]
for i in range(len(num_set)):
if num_set[i] < 60:
print("Someone failed!")
pass
print(num_set[i])
执行结果:
98
82
67
Someone failed!
58
90
#创建3个元组,和列表类似,同一个元组中可以存放任意数据类型
tuple1 = ()
tuple2 = (12,)
tuple3 = (1, 2, 3, 4, 5)
tuple4 = (3.14, 5.96, 1897, 2020, "China",3+4j)
tuple5 = 4,5,6,7
如上所示,元组和列表类似,同一个元组中可以没有数据,也可以有多种数据,非常灵活。
不过需要注意:
- 如果元组只有一个元素,那么这个元素后面要加逗号,如 tuple2,否则将被认为是一个基本数据类型,而不是元组;
- 创建元组,可以没有括号,元素之间用逗号分隔开即可。
访问元组中的元素
元组和列表都是一种序列,因此,也可以通过索引来访问,方法是一样的,如下例子:
tuple1 = (3.14, 5.96, 1897, 2020, "China",3+4j)
print("tuple1[2]:",tuple1[2])
print("tuple1[1:3]:",tuple1[1:3])
执行结果:
tuple1[2]: 1897
tuple1[1:3]: (5.96, 1897)
元组相关的常用内建方法
tuple1 = (3.14, 5.96, 1897, 2020, 1949)
#求元组长度,即元组中元素的个数:len(tuple)
print("The length of the tuple: ", len(tuple1))
#求元组中元素的最大值:max(tuple)
print("The largest element in the tuple: ", max(tuple1))
#求元组中元素的最小值:min(tuple)
print("The smallest element in the tuple: ", min(tuple1))
#统计某个元素在元组中出现的次数:tuple.count(obj)
print("The number of times 1949 appears: ", tuple1.count(1949))
#从元组中找出某个值第一个匹配项的索引位置:tuple.index(obj)
print("The index of the first location of 1949: ", tuple1.index(1949))
执行结果:
The length of the tuple: 5
The largest element in the tuple: 2020
The smallest element in the tuple: 3.14
The number of times 1949 appears: 1
The index of the first location of 1949: 4
元组常用的操作
元组常用的运算操作与列表相同,包括:元组拼接、元组乘法、迭代、嵌套等。简要举例如下:
tuple1 = (1,2,3,4)
tuple2 = (5,6,"BeiJin",7,8)
#元组拼接
print("tuple1 + tuple2:",tuple1 + tuple2)
#元组乘法
print("tuple1*2:",tuple1*2)
#判断元素是否存在于元组中
print("3 in tuple1?",3 in tuple1)
print("100 in tuple1?",100 in tuple1)
#迭代
for element in tuple1:
print(element)
#元组嵌套
tuple3 = [tuple1, tuple2]
print("tuple3:", tuple3)
执行结果:
tuple1 + tuple2: (1, 2, 3, 4, 5, 6, 'BeiJin', 7, 8)
tuple1*2: (1, 2, 3, 4, 1, 2, 3, 4)
3 in tuple1? True
100 in tuple1? False
1
2
3
4
tuple3: [(1, 2, 3, 4), (5, 6, 'BeiJin', 7, 8)]
字典
Python 的字典可以理解为一种映射表,存储 key-value(键值对)类型数据的容器。关于字典有三点需要注意:
- 同一个字典中,键必须是唯一的,不存在两个相同的键,键的值不能改变,数据类型可以是数字,字符串或者元组;
- 同一个字典中,值不必唯一,值可以是任意数据类型;
- 字典定义采用花括号 {},键值之间用冒号隔开,键值对之间用逗号隔开;
创建字典
#创建几个字典
dict1 = {"ID0012":"ZhangSan", "ID0019":"LiSi", "ID0015":"WangWu"}
dict2 = {1:"BeiJin",3:"ShangHai",5:"HangZhou"}
dict3 = {"Excellent":100, "Good":80, "Pass":60, "Fail":50}
#字典也可以嵌套
dict4 = {"A":["LiTong","XiaoMing"], "B":["XiaoHong","XiaoHua"]}
访问字典中的元素
与列表和元组不同,访问字典中的元素不能通过索引,字典中键和值是成对的,而键是唯一的,那么,通过键就可以访问对应的值。
访问有两种方式:
- 直接通过键来访问;
- 通过内建 get(key) 方法访问。
如下例子:
dict1 = {"Excellent":100, "Good":80, "Pass":60, "Fail":50}
dict2 = {1:"BeiJin",3:"ShangHai",5:"HangZhou"}
print("dict1['Good']:", dict1['Good'])
print("dict2[1]:", dict2[1])
print("dict1.get('Good'):", dict1.get('Good'))
执行结果:
dict1['Good']: 80
dict2[1]: BeiJin
dict1.get('Good'): 80
修改字典中的元素
dict1 = {"Excellent":100, "Good":80, "Pass":60, "Fail":50}
dict1['Good'] = 85
print("dict1['Good']:", dict1.get('Good'))
执行结果:
dict1['Good']: 85
删除字典中的元素或字典
和列表一样,可以通过 del 语句删除字典中的元素或者删除整个字典,可以通过内建方法 clear() 清空字典,还可以通过内建方法 pop(key) 删除指定的元素,如下例子:
dict1 = {"Excellent":100, "Good":80, "Pass":60, "Fail":50}
#删除字典中的一个元素
del dict1['Good']
print("dict1:", dict1)
#使用内建方法pop(key)删除指定元素
dict1.pop('Pass')
print("dict1:", dict1)
#清空字典
dict1.clear()
print("dict1:", dict1)
#删除字典
del dict1
执行结果:
dict1: {'Excellent': 100, 'Pass': 60, 'Fail': 50}
dict1: {'Excellent': 100, 'Fail': 50}
dict1: {}
字典的常用内建方法
dict1 = {"Excellent":100, "Good":80, "Pass":60, "Fail":50}
#计算字典的长度
print("The length of the dict1: ", len(dict1))
#获取字典中所有的键
print("Get all the keys in dict1:\n", dict1.keys())
#获取字典中所有的值
print("Get all the values in dict1:\n", dict1.values())
#获取字典中所有的键值对
print("Get all the key-value pairs in dict1:\n", dict1.items())
执行结果:
The length of the dict1: 4
Get all the keys in dict1:
dict_keys(['Excellent', 'Good', 'Pass', 'Fail'])
Get all the values in dict1:
dict_values([100, 80, 60, 50])
Get all the key-value pairs in dict1:
dict_items([('Excellent', 100), ('Good', 80), ('Pass', 60), ('Fail', 50)])
集合
集合(set)是一个数学概念,是由一个或多个确定的元素所构成的整体。
集合具有三个特点:
- 确定性,集合中的元素必须是确定的;
- 互异性,集合中的元素互不相同;
- 无序性,集合中的元素没有先后之分。
根据集合的特点,Python 中集合的基本功能包括关系测试和消除重复元素。
创建集合
可以用大括号({})创建集合。但需要注意,如果要创建一个空集合,必须用 set() 而不是 {} ;后者创建一个空的字典。
country1 = {'China', 'America', 'German'}
country2 = set('China')
country3 = set()
print("country1:",country1)
print("country2:",country2)
print("country3:",country3)
执行结果:
('country1:', set(['German', 'America', 'China']))
('country2:', set(['i', 'h', 'C', 'a', 'n']))
('country3:', set([]))
操作集合中的元素
我们可以访问集合中的元素,也可增加,移除元素。
setA = {'A', 'B', 'C'}
print("setA:",setA)
setA.add('D')
print("setA.add('D'):",setA)
setA.add('A')
print("setA.add('A'):",setA)
setA.remove('A')
print("setA.remove('A'):",setA)
执行结果:
('setA:', set(['A', 'C', 'B']))
("setA.add('D'):", set(['A', 'C', 'B', 'D']))
("setA.add('A'):", set(['A', 'C', 'B', 'D']))
("setA.remove('A'):", set(['C', 'B', 'D']))
集合运算
对于集合,我们可以计算交集、并集、补集。
setA = {'A', 'B', 'C'}
setB = {'D', 'C', 'E'}
#交集
print("setA & setB:",setA&setB)
#并集
print("setA | setB:",setA|setB)
#差集
print("setA - setB:",setA-setB)
执行结果:
('setA & setB:', set(['C']))
('setA | setB:', set(['A', 'C', 'B', 'E', 'D']))
('setA - setB:', set(['A', 'B']))
队列
前面已经介绍过列表,结合其内建函数 append(obj) 和 pop(),可以直接将列表作为栈使用。本节将介绍另一种数据结构——队列,即“先进先出”,就像排队打饭,队头的人先打到饭,队尾的人最后。Python 中有专门的队列模块 Queue,本节介绍一种用列表实现的队列,如下例子:
from collections import deque
#基于列表初始化一个队列
queue = deque(['A','B','C'])
#队尾添加元素
queue.append('D')
print('queue',queue)
#队头出列
queue.popleft()
print('queue',queue)
#队头出列
queue.popleft()
print('queue',queue)
执行结果:
('queue', deque(['A', 'B', 'C', 'D']))
('queue', deque(['B', 'C', 'D']))
('queue', deque(['C', 'D']))
感谢大家的支持和喜欢,小编会每天分享更多Python学习的干货知识给大家,所以大家别忘了关注小编哦。
更多Python爬虫、数据分析、办公自动化、全栈开发、人工智能学习资@林夕编程关键字【资料】领取