Python流程控制

一、顺序结构

代码自上而下依次运行
x = 1
x = x + 1
X = X + X + 1
print(X)
...
out
3

二、分支结构(if条件)

"""
代码缩进:
    在python中使用缩进来的方式来表示代码的从属关系
    一般情况下我们采用四个空格来表示缩进(尽量使用空格键,python中可以使用TAB键)
    同属于一个关键字的子代码必须保持相同的缩进量,即同级代码保持相同的缩进量
    ps:简单记忆,遇到冒号从属的下行代码必缩进
"""  
# 需求 :如果年龄大于18岁,打印成年
age = 21
if age > 18:
    print('成年')  # 与if是从属关系
...
成年
"""
if 条件:
   条件成立之后才会执行的代码
"""

if 和 else

# 需求 :如果年龄大于18岁,打印成年,否则打印未成年
age = 12
if age > 18:
    print('成年')
else:
    print('未成年')
...
out
未成年

if 和 elif

# 需求 :如果年龄小于30,打印继续努力,小于40岁,打印三十而立,小于50,打印四十不惑,否则活到老学到老
age = 33
if age < 30: 
print("继续努力")
elif age < 40:
print("三十而立")
elif age < 50:
print("四十不惑")
else:
print("活到老学到老")
...
out
三十而立
"""
if 条件1:
    代码1
    代码2
    ...
elif 条件2:
    代码1
    代码2
    ...
else:
    代码1
    代码2
    ...
自上而下
    条件1成立 执行if的子代码 elif和else都不执行
    条件2成立(说明条件1没有成立) 执行elif的子代码 if和else都不执行
    如果条件都不成立 则走最后的else子代码 if和elif都不执行
    elif可以写多个
"""

多个条件

# if 条件可以是一个,也可以是多个
gender = 'male'
age = 26
weight = 120
if gender == 'male' and age <30 and weight <160:
    print('一起吃饭')
else:
    print('家里着火')
...
out
一起吃饭

if 嵌套

# if 子代码可以嵌套一个或多个 if 语句
gender = 'male'
age = 26
weight = 120
is_ok = False
is_sure = False
if gender == 'male' and age <30 and weight <160:
    print('可以一起吃饭吗?')
    if is_ok:
        print('很高兴认识你')
    else:
        print('可以朋友吗?')
        if is_sure:
            print('加个微信')
        else:
            print('拜拜了您内')
else:
    print('我家又着火了')
...
out
可以一起吃饭吗?
可以朋友吗?
拜拜了您内
练习
# 1.成绩评判系统
"""
分数大于90 打印优秀
分数大于80 打印良好
分数大于70 打印一般
分数大于60 打印及格
分数小于60 打印挂科
"""
score = input('score>>>:')
score = int(score)
if score > 90:
    print('优秀')
elif score > 80:
    print('良好')
elif score > 70:
    print('一般')
elif score > 60:
    print('及格')
else:
    print('挂科')
...
out
score>>> 10
挂科

# 2.用户登录功能
# a.获取用户的用户名和密码
username = input('username>>>:')
password = input('password>>>:')
# b.判断用户名和密码是否正确
if username == 'richer' and password == '666':
    print('登录成功!')
else:
    print('登录错误')
...
out
username>>>:richer
password>>>:666
登陆成功

# 3.根据星期的不同做出不同的动作  周一到周五划水  周六周日躺平
today = input('周几>>>:')
if today in ('一','二','三','四','五'):
    print('摸鱼')
elif today in ('六','七'):
    print('躺平')
else:
    print('见了鬼了')
...
out
周几>>>:一
摸鱼

三、循环结构

1.while 循环

while True:
# 1.获取用户的用户名和密码
username = input('username>>>:')
password = input('password>>>:')
# 2.判断用户名和密码是否正确
if username == 'richer' and password == '666':
    print('登录成功')
else:
    print('用户名或密码错误')
...
out
username>>>: jack
password>>>: 666
用户名或密码错误
username>>>:

"""
while 条件
    循环体代码1
    循环体代码2
    ...
当条件成立时,会依次执行while子代码
子代码运行结束后再次返回到条件处判断条件是否成立,如果成立继续执行,如果不成立则结束循环
即while 条件为False的时候
"""

break 结束循环

# while也可以与else搭配使用
count = 1
while count < 11:
    if count == 7:
        break  # 结束离它最近的一个循环即本层循环
    print(count)
    # 让count自增1 
    count += 1
else:
    print('循环结束')  # 当while没有被break主动结束的情况下自动结束了 则会走else
...
out
1
2
3
4
5
6

continue 跳过本次循环,开始下一次循环

# 循环打印1-10,除了数字
count = 1
while count < 11:
    if count == 7:
        count += 1
        continue  # 跳过7,开始下一次循环
    print(count)
    count += 1
...
out
1
2
3
4
5
6
8
9
10

while 循环嵌套

# while 循环内部可以嵌套一个或多个while 循环
while True:
    username = input('username>>>:')
    password = input('password>>>:')
    if username == 'richer' and password == '666':
        print('登录成功')
    while True:
        command = input('command>>>:')
        if command == 'q':
            break
        print('正在执行您的命令:%s'%command)
    break
else:
    print('用户名或密码错误')
...
out
username>>>:richer
password>>>:666
登录成功
command>>>:正在执行您的命令:功能1
command>>>:q

全局标志位

# 利用flag标识符的方式即全局标志位,在单层循环的退出中,使用break能退出多层循环
flag = True
while flag:
    username = input('username>>>:')
    password = input('password>>>:')
    if username == 'richer' and password == '666':
        print('登录成功')
    while flag:
        command = input('command>>>:')
        if command == 'q':
            flag = False
        print('正在执行您的命令:%s'%command)
    break
else:
    print('用户名或密码错误')
...
out
username>>>:richer
password>>>:666
登录成功
command>>>:正在执行您的命令:功能1
command>>>:q

2.for 循环

for 循环能够做到的事情while循环都可以做到,但是for 循环使用起来比while更加简单快捷
while循环:
name_list = ['jason','egon','kevin','tony']
print(len(name_list))  # 4
# 使用while循环将列表中的元素依次打印出来
count = 0
while count < len(name_list):
    print(name_list[count])
    count += 1
...
out
4
jason
egon
kevin
tony

for循环:
name_list = ['jason','egon','kevin','tony']
for name in name_list:
    print(name)
...
out
jason
egon
kevin
tony
"""
for 变量名 in 可迭代对象:  # 对象可看成是 字符串 列表 字典等类型

若不知道变量名起什么,一般都是起i、j、item等
"""
for i in 'world':  # for循环字符串,会将单个的字符依次赋值给变量名i
    print(i)
...
out
w
o
r
l
d

for i in {'name':'jason','pwd':123}:  # for循环字典,只会依次拿到字典的key
    print(i)
...
out
name
pwd

range()

# 简单的看成是一个能够产生一个含有多个元素的列表
for i in range(5):  
    print(i)
...
out
0
1
2
3
4

for i in range(1,5):  
    print(i)
...
out
1
2
3
4

for i in range(1,5,2):  # 2第三位是间隔位数即步长
    print(i)
...
out
1
3

"""
range(起始位置,终止位置),顾头不顾尾
"""
"""
range()
在python3中,需要值的时候才会给你z值,不需要的时候就不给,节省内存
在python2中,直接生成一个列表range(5) >>> [0,1,2,3,4],不节省内存
xrange(),等价于 python3里面的range()
"""

break

for i in [1,2,3,4,5,6]:
if i == 4:
    break  # 结束本层for循环  与while+break一致
print(i)
...
out
1
2
3

continue

for i in [1,2,3,4,5,6]:
if i == 4:
    continue  # 结束本次for循环  与while+continue一致
print(i)
...
out
1
2
3
5
6

for 与 else

# for循环正常结束之后走else,否则不走,与while+else一致
for i in range(5):
    if i == 3:
        break
    print(i)
else:
    print('快结束了')
...
out
0
1
2

for 循环嵌套

# 九九乘法表
for i in range(1,10):
  for j in range(1,i+1):
      print('%s*%s=%s'%(i,j,i*j),end=' ')
  print()
...
out
1*1=1 
2*1=2 2*2=4 
3*1=3 3*2=6 3*3=9 
4*1=4 4*2=8 4*3=12 4*4=16 
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 
posted @ 2021-06-01 21:23  Richer-J  阅读(41)  评论(0)    收藏  举报