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 条件表达式可以通过布尔操作符 andornot 实现多重条件判断。
  • 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 参考文献