4. python 流程控制

一、 顺序结构

代码从上到下一行行执行,没有任何判断和跳转

二、if分支结构

  • python中流程控制须格外注意缩进,否则可能遇到各种奇奇怪怪的错误
  • else if的写法是elif
  • 注意if,else,elif后面加冒号:
  • False、0、各种表示空的值(None,"",'',(),[],{}),在if判断时都为假;但注意" ",' '(一个空格)为真
  • pass语句相当于一个占位符,表示不做任何事

if语句分支形式

a=input("Input a value:")
if int(a) > 20:
    print("value > 20")
a=input("Input a value:")
if int(a) > 20:
    print("value > 20")
else:
    print("value <= 20")
a=input("Input a value:")
val=int(a)
if val > 20:
    print("value > 20")
elif val < 20:
    print("value < 20")
else:
    print("value = 20")

三、 断言

与if类似,若判断为True则继续执行,若判断为false则报错AssertionError

  • 注意断言后面不需要冒号:
  • 断言后面执行的语句也不需要缩进
a=input("Input a value:")
val=int(a)
assert val > 20
print("value > 20")

#输出
Input a value:30
value > 20

Input a value:10
Traceback (most recent call last):
  File "E:/pytest02/var.py", line 9, in <module>
    assert val > 20
AssertionError

四、 循环结构

  • 同样同样,注意缩进
  • 注意循环判断语句后面也有个冒号:

1. while循环

i=0
while i<5:     #注意冒号:
    print(i)
    i+=1

使用while循环遍历元组/列表

a_tuple=(3,6,432,876,132)
i=0
while i<len(a_tuple):
    print(a_tuple[i]+1)
    i+=1

2. for-in循环

for-in循环专门用于遍历字符串、范围、列表、元组、字典等可迭代对象

for 变量 in 字符串|范围|列表|元组|字典:
    statements

小例子:

#阶乘计算
mx=5
result=1
for i in range(1,mx+1):
    result *= i
print(result)
#遍历元组
a_tuple=(2,4,5,7)
for i in a_tuple:
    print(i)

#另一种方法
for ind in range(0,len(a_tuple)):
    print(a_tuple[ind])
#遍历字典,可以分别用items(),keys,values()三种方法
a_dict={'a':2,'b':4,'c':5}
for key,value in a_dict.items():
    print("keys: ",key)
    print("values: ", value)

for key in a_dict.keys():
    print("keys: ",key)
    print("values: ", a_dict[key])

for value in a_dict.values():
    #这样没法取key值
    print("values: ",value)

for-in循环中变量的值只由in后面可迭代对象的值控制,在程序中对其赋值不影响循环次数(也不建议这样做)

for i in range(1,5):
    i=20    #不会影响循环次数
    print(i)

#输出
20
20
20
20

3. for表达式

语法格式

[表达式 for 变量 in 可迭代对象]
或者
(表达式 for 变量 in 可迭代对象)

与普通for循环的区别:

  • 在for关键词前定义一个表达式,该表达式中通常会包含计数器
  • for表达式没有循环体,因此不需要冒号:
  • 使用[]的for表达式最终返回的是列表,也被称为列表推导式
  • 使用()的for表达式最终返回的是生成器,也被称为生成器推导式
a_range=range(5)
a_list=[x*x for x in a_range]
print(a_list)

#输出
[0, 1, 4, 9, 16]

可以在for表达式后添加if条件,此时只有符合条件的元素才会执行表达式

a_range=range(5)
a_list=[x*x for x in a_range if x%2 == 0]
print(a_list)

#输出
[0, 4, 16]

下面是使用()的for表达式返回生成器的例子

a_range=range(5)
c_generator=(x*x for x in a_range if x%2 == 0)
for i in c_generator:   #要多一个循环来输出
    print(i,end='\t')

#输出
0	4	16    

for表达式可以使用多个循环,效果同嵌套循环(较难理解,少用)

d_list=[(x,y) for x in range(5) for y in range(4)]
print(d_list)

#相当于
d_list2=[]
for x in range(5):
    for y in range(4):
        d_list2.append((x,y))
print(d_list2)

#输出
[(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3), (3, 0), (3, 1), (3, 2), (3, 3), (4, 0), (4, 1), (4, 2), (4, 3)]

4. 常用函数

zip()函数——将两个列表“压缩”成一个zip对象(可迭代对象)。这样就可以使用一个循环遍历两个列表

a=['a','b','c']
c=[0.1,0.2]
my_list=[x for x in zip(a,c)]
print(my_list)

#输出
[('a', 0.1), ('b', 0.2)]

reversed()函数——反向可迭代对象

a=[2,5,7,4,8,4,7]
my_list=[x for x in reversed(a)]
print(my_list)

#输出
[7, 4, 8, 4, 7, 5, 2]

5. 控制循环结构

break——在符合条件时立即结束本次循环

a=[2,5,7,4,8,4,7]
for i in a:
    if i%2 == 0:
        print(i)
        break

#输出
2

continue——在符合条件时忽略本次循环剩下的语句

a=[2,5,7,4]
for i in a:
    print(i)
    if i%2 == 0:
        continue
    print("输出continue后语句")

#输出
2
5
输出continue后语句
7
输出continue后语句
4

return——用于从包围它的最直接的方法、函数或匿名函数返回。一旦在循环体内执行到return时,return语句就会结束该函数或方法

def test():
    # 外层循环
    for i in range(5):
        for j in range(5):
            print("i的值为:%d,j的值为:%d" % (i,j))
            if j == 1:
                return
            print("return后输出语句")

#调用函数
test()

#输出
i的值为:0,j的值为:0
return后输出语句
i的值为:0,j的值为:1

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hehuyi_In

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值