1 控制流语句
1.1 条件语句
1.1.1 if 语句基本语法
if语句的语法结构:
if expression1:
expr_true_suite1
elif expression2:
expr_true_suite2
elif expression3:
expr_true_suite3
else:
expr_true_suite4
- if 语句的
expr_true_suite
代码块只有当条件表达式expression
结果为真时才执行,否则将继续执行紧跟在该代码块后面的语句。 - if 语句中的
expression
条件表达式可以通过布尔操作符and
,or
和not
实现多重条件判断。 - elif 语句用来检查多个表达式是否为真,并在为真时执行特定代码块中的代码
- else 如果
if
语句的条件表达式结果布尔值为假,那么程序将执行else
语句后的代码。
age = 22
if age >= 18:
print("您的年龄是",age,"岁,您已成年")
您的年龄是 22 岁,您已成年
# 多条件判断的时候,注意条件的顺序,理解其中的逻辑关系
nums = int(input("猜一猜小姐姐想的是哪个数字?"))
# input 函数将接收的任何数据类型都默认为 str
if nums == 666:
print("你太了解小姐姐的心思了!")
print("哼,猜对也没有奖励!")
else:
print("猜错了,小姐姐现在心里想的是666!")
print("游戏结束,不玩儿啦!")
猜一猜小姐姐想的是哪个数字?666
你太了解小姐姐的心思了!
哼,猜对也没有奖励!
游戏结束,不玩儿啦!
if判断条件还可以简写,比如写:
if x:
print('True')
只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False。
x = 2
if x:
print('True')
True
1.1.2 if 嵌套
- if语句支持嵌套,即在一个if语句中嵌入另一个if语句,从而构成不同层次的选择结构。
- Python 使用缩进而不是大括号来标记代码块边界,因此要特别注意else的悬挂问题
游戏规则:与电脑分别出拳,1:石头 ,2:剪刀 , 3:布 , 0:退出游戏
|user|computer|result| |----|--------|------| |石头|石头|平局| |石头|剪刀|玩家获胜| |石头|布|电脑获胜| |剪刀|剪刀|平局| |剪刀|布|玩家获胜| |剪刀|石头|电脑获胜| |布|布|平局| |布|石头|玩家获胜| |布|剪刀|电脑获胜|
import random
user = int(input("请出拳:"))
if user in range(3):
computer = int(random.randint(1,3))
print(computer)
if(user == computer):
print("平局")
elif(user == 1 and computer == 2) or (user == 2 and computer == 3) or (user == 3 and computer == 1):
print("玩家获胜")
else:
print("电脑获胜")
else:
print("您的出拳不符合规则")
请出拳:2
3
玩家获胜
1.2 三元运算符
if可以写成单行表达式,讲返回结果提前至if语句之前
i = 0
if i > 0 :
result = 'true'
else:
result = 'false'
result
'false'
i = 0
result = 'true' if i > 0 else 'false'
result
'false'
i = 2
result = 'true' if i > 0 else 'false'
result
'true'
2 循环语句
2.1 while循环
Python中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为
while 判断条件:
执行语句
执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。
当判断条件假false时,循环结束。如果条件判断语句永远为 true,循环将会无限的执行下去
i = 0
while i <= 6:
if i % 2 == 0:
print("当前是第%d次执行循环,结果:是偶数呢"%(i+1))
else:
print("当前是第%d次执行循环,结果:是奇数啊"%(i+1))
i = i + 1
当前是第1次执行循环,结果:是偶数呢
当前是第2次执行循环,结果:是奇数啊
当前是第3次执行循环,结果:是偶数呢
当前是第4次执行循环,结果:是奇数啊
当前是第5次执行循环,结果:是偶数呢
当前是第6次执行循环,结果:是奇数啊
当前是第7次执行循环,结果:是偶数呢
while循环嵌套
while 条件1:
满足条件1执行代码块1
while条件2:
满足条件2执行代码块2
# 第一层循环
i = 1
while i <= 5:
print("☆",end=' ') #设置结束符为空,默认结束符是换行
i += 1
☆ ☆ ☆ ☆ ☆
# 第一层循环
i = 1
while i <= 5:
print("★")
i += 1
★
★
★
★
★
#在上一层循环的基础上再加一层循环
i = 1
while i <= 5:
j = 1
while j <= 5:
print("○",end=' ')
j += 1
print()
i += 1
○ ○ ○ ○ ○
○ ○ ○ ○ ○
○ ○ ○ ○ ○
○ ○ ○ ○ ○
○ ○ ○ ○ ○
九九乘法表
i = 1
while i <= 9:
j = 1
while j <= i:
print("%d * %d = %d" %(j,i,i*j),end=" ") #设置结束符为空,默认结束符是换行
j += 1
print() #一次执行结束后,打印空行
i += 1
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
2.2.1 for循环
2.2.2 for循环基本语法
for
循环是迭代循环,在Python中相当于一个通用的序列迭代器,可以遍历任何有序序列,如str、list、tuple
等,也可以遍历任何可迭代对象,如dict
for 迭代变量 in 可迭代对象:
代码块
for i in 'ILoveYou':
print(i, end=' ') # 不换行输出
I L o v e Y o u
for i in ['I', 'Love', 'You']:
print(i, end=' ') # 不换行输出
I Love You
2.2.3 range函数
- rang(start,stop,step) 内含参数含义
- range(n)的含义为从0到n-1步长为1取数,并且函数返回的是一个迭代器,如果要显示迭代器的内容,需要用list函数转换成列表或者for循环遍历查看
for i in range(1,10): # 从0到n-1取数
print(i)
1
2
3
4
5
6
7
8
9
for i in range(1,10,2): # 步长为2,输出奇数
print(i)
1
3
5
7
9
2.2.4 break和continue
- break 结束整个循环
- continue 终止本次循环,继续下一次循环
- 注意:
- break/continue只能用在循环中,除此以外不能单独使用
- break/continue在嵌套循环中,只对最近的一层循环起作用
i = 0
while i<10:
i = i+1
if i==5:
break
print(i, end = ' ')
1 2 3 4
i = 0
while i<10:
i = i+1
if i==5:
continue
print(i, end = ' ')
1 2 3 4 6 7 8 9 10
import random
gesture = ['石头' , '剪刀', '布']
wins = 0
print("数字含义 : 1:石头 ,2:剪刀 ,3:布 ,0:退出游戏")
for i in range(20):
user = int(input("请出拳:"))
if user ==0:
print("退出游戏")
break
if user in range(1,4):
computer = int(random.randint(1,3))
print(computer)
print("玩家: {0} VS 计算机: {1}".format(gesture[user-1], gesture[computer-1]))
if(user == computer):
print("两位心有灵犀,是平局哦")
elif(user == 1 and computer == 2) or (user == 2 and computer == 3) or (user == 3 and computer == 1):
print("玩家获胜,电脑弱爆了!")
wins = wins + 1
else:
print("电脑获胜,玩家表示不服,要决战到天亮")
else:
print("您的出拳不符合规则,请重新出拳")
print("两位交战 ", i,"次")
print("玩家获胜次数: ", wins,"次")
print("玩家获胜概率:",round(wins/i,2))
数字含义 : 1:石头 ,2:剪刀 ,3:布 ,0:退出游戏
请出拳:1
1
玩家: 石头 VS 计算机: 石头
两位心有灵犀,是平局哦
请出拳:2
2
玩家: 剪刀 VS 计算机: 剪刀
两位心有灵犀,是平局哦
请出拳:3
1
玩家: 布 VS 计算机: 石头
玩家获胜,电脑弱爆了!
请出拳:0
退出游戏
两位交战 3 次
玩家获胜次数: 1 次
玩家获胜概率: 0.33
2.2.5 pass语句
pass
语句的意思是“不做任何事”,如果你在需要有语句的地方不写任何语句,那么解释器会提示出错,而 pass
语句就是用来解决这些问题的。
def a_func():
pass
pass
是空语句,不做任何操作,只起到占位的作用,其作用是为了保持程序结构的完整性。尽管pass
语句不做任何操作,但如果暂时不确定要在一个位置放上什么样的代码,可以先放置一个pass
语句,让代码可以正常运行。
2.3 推导式
2.3.1 列表推导式
[ expr for value in collection [if condition] ]
- 第一个位置(for之前):将要重复计算的公式
- 第二个位置(for和in之间):从可迭代对象或者迭代器中提取的循环变量
- 第三个位置(in之后):可迭代的对象或者迭代器
[ i for i in range(1, 11)]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[ i * 2 for i in range(1, 11)]
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
[ i + j for i in range(1, 3) for j in range(10, 20)] #每个i和每个j都做一次加法
[11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21]
2.3.2 元组推导式
( expr for value in collection [if condition] )
a = (x for x in range(10))
print(tuple(a))
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
2.3.3 字典推导式
{ key_expr: value_expr for value in collection [if condition] }
b = {i: i % 2 == 0 for i in range(10) if i % 3 == 0}
print(b)
{0: True, 3: False, 6: True, 9: False}
2.3.4 集合推导式
c = {i for i in [1, 2, 3, 4, 5, 5, 6, 4, 3, 2, 1]}
print(c)
{1, 2, 3, 4, 5, 6}
3 参考文献