python流程控制与循环

什么是流程控制

定义:流程控制即控制事物的执行流程

执行流程的三种方式:

  1. 顺序结构:

    自上而下的一次运行 # python程序默认是顺序结构 eg:

    Created with Raphaël 2.3.0 开始 操作1 操作2 操作3 结束
  2. 分支结构

    在运行过程中根据条件不同可能会执行不同的流程 eg:

    Created with Raphaël 2.3.0 开始 操作1 True or False? 操作2 输入/输出 结束 操作3 yes no
  3. 循环结构

    在运行过程中有些代码需要反复执行 eg:

    Created with Raphaël 2.3.0 开始 操作 True or False? 输入/输出 结束 子程序 yes no

必知必会(###)

  1. 条件都会转成布尔值 从而决定子代码是否执行
  2. 在python中 使用缩进来表示代码的从属关系
  3. 并不是所有的代码都可以拥有子代码
  4. 同属于某个代码的多行子代码 必须要保持相同的缩进量
    在python中推荐使用四个空格来缩进
    ps:小技巧 上一行代码的结尾如果是冒号 那么下一行代码必缩进

分支结构之”if”判断

关键字 if

单if分支结构

'''
if 条件:
	条件成立后执行子代码块
'''
if 15 > 13:
    print('15比13大')

Created with Raphaël 2.3.0 开始 判断 输出 结束 yes

在这里插入图片描述

if与else连用

'''
if 条件:
	条件成立之后执行的子代码块
else:
	条件不成立情况下执行的子代码块
	
ps:if与else连用 两者的代码块永远只会执行一个
'''
age = 21
if age < 28:
    print('小姐姐好')
else:
    print('阿姨好')
Created with Raphaël 2.3.0 开始 操作1 True or False? 操作2 输入/输出 结束 操作3 yes no

在这里插入图片描述

if elif else 三者连用

'''
if 条件1:
	条件1成立之后执行的子代码块
elif 条件2:
	条件1不成立,条件2成立之后执行的子代码块
elif 条件3:
	条件1和2都不成立 条件3成立之后执行的子代码块
....
else:
	上述所有条件都不成立 执行的子代码块
	
ps: elif可以有很多个
三者连用也只会执行其中的一个子代码块
'''
# 根据成绩评判分类
# 大于90优秀 大于80良好 大于70一般 大于60及格 其他挂科
score = 79
if score > 90:
    print('优秀')
elif score > 80:
    print('良好')
elif score > 70:
    print('一般')
elif score 78> 60:
    print('及格')
else:
    print('挂科重修')
Created with Raphaël 2.3.0 开始 操作1 条件1 操作2 输出 结束 条件2 操作3 条件3 操作4 条件4 操作5 操作6 yes no yes no yes no yes no

在这里插入图片描述

if判断之嵌套

age = 26
height = 165
weight = 99
is_beautiful = True
is_success = True
if age < 28 and height > 160 and weight < 100 and is_beautiful:
    print('小姐姐能否加个微信')
    # 判断小姐姐是否会给微信
    if is_success:
        print('吃饭 看电影 天黑了...')
    else:
        print('去你妹的 变态!')
else:
    print('可惜了')

ps :流程图如下

Created with Raphaël 2.3.0 开始 操作1 条件1 操作2 条件2 操作3 输出 结束 操作4 输出 操作5 yes no yes no

在这里插入图片描述

while循环

'''
while 条件:
	条件成立之后循环执行的子代码块
'''
while True:
    # 1.获取用户输入的用户名和密码
    username = input('username>>>:')
    password = input('password>>>:')
    # 2.判断用户名和密码是否正确
    if username == 'jason' and password == '123':
        print('login in sucessful')
    else:
        print('username or password error')

ps : 流程图如下 因为条件为True 所以是没有结束的

Created with Raphaël 2.3.0 开始 条件1:True 获取用户输入的用户名和密码 条件2:if判断 操作2 输出 操作3 yes yes no

在这里插入图片描述

while+break

break作用:结束本层循环
while True:
	1.获取用户输入的用户名和密码
	username = input('username>>>:')
     password = input('password>>>:')
     # 2.判断用户名和密码是否正确
     if username == 'jason' and password == '123':
         print('来宾三位')
         # 直接结束本层循环
         break
     else:
         print('去你妹的 没钱滚蛋')

ps : 流程图如下 当if判断成立时,因为有break所以会结束掉本次循环,程序运行结束

Created with Raphaël 2.3.0 开始 条件1:True 获取用户输入的用户名和密码 条件2:if判断 操作2 输出 break 结束 操作3 输出 yes no yes no

在这里插入图片描述

break跳出本层循环详解

# 以下面程序为例子
while True:
    # 1.获取用户输入的用户名和密码
    username = input('username>>>:')
    password = input('password>>>:')
    # 2.判断用户名和密码是否正确
    if username == 'jason' and password == '123':
        print('来宾三位')
        while True:
            cmd = input('请输入您的指令>>>:')
            # 判断用户是否想退出
            if cmd == 'q':
                break
            print('正在执行您的指令:%s' % cmd)
        break
    else:
        print('去你妹的 没钱滚蛋')

ps : 流程图如下

Created with Raphaël 2.3.0 开始 条件1:True 1获取用户输入的用户名和密码 条件2:if判断 操作2 子程序嵌套:True 条件3:if判断 操作5 break 内层循环结束 break 外层循环结束 操作4 输出 操作3 输出 yes no yes no yes no

在这里插入图片描述

全局标志位

# 除了使用break结束掉循环外,我们还可以用全局标志位来结束掉循环
flag = True
while flag:
    # 1.获取用户输入的用户名和密码
    username = input('username>>>:')
    password = input('password>>>:')
    # 2.判断用户名和密码是否正确
    if username == 'jason' and password == '123':
        print('来宾三位')
        while flag:
            cmd = input('请输入您的指令>>>:')
            # 判断用户是否想退出
            if cmd == 'q':
                flag = False
            print('正在执行您的指令:%s' % cmd)
    else:
        print('去你妹的 没钱滚蛋')

ps:流程图如下

Created with Raphaël 2.3.0 开始 flag = True 条件1:True 1获取用户输入的用户名和密码 条件2:if判断 操作2 子程序嵌套:True 条件3:if判断 操作5 flag = False 内层循环结束 外层循环结束 操作4 输出 操作3 输出 yes no yes no yes no

在这里插入图片描述

while+continue

# 2.使用while循环打印出0-10但是不打印4
# 1.定义一个起始变量
count = 0
# 2.循环
while count < 11:
    # 5.判断 如果count为4则不打印
    if count == 4:
        count += 1
        # 跳过本次循环 开始下一次循环
        continue
    # 3.打印变量的值
    print(count)
    # 4.变量值自增1
    count += 1
 
"""
continue会让循环体代码直接回到条件判断处重新判断
"""
Created with Raphaël 2.3.0 开始 count = 0 条件1:count < 11 条件2:if count == 4 count += 1 coutinue print(count) count += 1 结束 yes no yes no

while+else

count = 0
while count < 5:
     print(count)
     count += 1
else:
     print('嘿嘿嘿')  # 会执行else子代码   TODO 图1

count = 0
while count < 5:
    if count == 3:
        break
    print(count)
    count += 1
else:
    print('嘿嘿嘿')  # 不会执行else子代码 TODO 图2
"""
当while循环没有被人为中断(break)的情况下才会走else
"""



Created with Raphaël 2.3.0 开始 count = 0 条件1:count < 5 print(count) count += 1 else print('嘿嘿嘿') 结束 yes no

---------------------------------------------(图1)-----------------------------------------------------------

在这里插入图片描述

Created with Raphaël 2.3.0 开始 count = 0 条件1:count < 5 if count == 3: break 结束 print(count) count += 1 else print('嘿嘿嘿') yes no yes no

---------------------------------------------(图2)-----------------------------------------------------------

死循环

while True:
    print(1)
"""死循环会让CPU极度繁忙 甚至奔溃"""
Created with Raphaël 2.3.0 开始 while True print(1) yes

for循环

for循环能做到的事情 while循环都可以做到
所以for循环与while循环流程图相差不大
但是for循环语法更加简洁 并且在循环取值问题上更加方便

name_list = ['jason', 'tony', 'kevin', 'jack', 'xxx']
# 循环取出列表的每一个元素并打印
# while实现
# count = 0
# while count < 5:
#     print(name_list[count])
#     count += 1
# for循环
for name in name_list:
    print(name)
"""
for 变量名 in 可迭代对象:  # 字符串、列表、字典、元组、集合
    for循环体代码   
ps:变量名如果没有合适的名称 那么可以使用i,j,k,v,item等
"""
# for循环字典:默认只能拿到k

range关键字

# 关键字range
# 第一种:一个参数  从0开始 顾头不顾尾
for i in range(10):
     print(i)
#第二种:两个参数  自定义起始位置 顾头不顾尾
for i in range(4, 10):
       print(i)
# 第三种:三个参数  第三个数字用来控制等差值
for i in range(2, 100, 10):
    print(i)
    
# range在不同版本的解释器中 本质不同
'''
在python2.X中range会直接生成一个列表
	在python2.X中有一个xrange也是迭代器(老母猪)
在python3.X中range是一个迭代器(老母猪)  节省内存空间
	python2.X中xrange就是python3.x里面的range
'''

for+break

# break功能也是用于结束本层循环
for i in range(10):
    if i == 4:
        break
    print(i) # 1, 2, 3

for+continue

continue功能也是用于结束本次循环
for i in range(10):
    if i == 4:
        continue
    print(i)  # 1, 2, 3, 5, 6, 7, 8, 9

for+else

# 同while+else一样else也是在for循环正常结束的情况下才会执行

for i in range(10):
    if i == 4:
        break
    print(i)
else:
    print('你追我!!!')  # 程序执行不到这一步

for循环的嵌套使用小例子

1:
for i in range(3):
	for j in range(5):
		print("*", end='')
	print()
    
"""
*****
*****
*****
"""2:  九九乘法表  
for i in range(1, 10):
    for j in range(1, i + 1):
        print('%s*%s=%s' % (i, j, i * j), end=' ')
    print()3:
max_level=5
for current_level in range(1,max_level+1):
    for i in range(max_level-current_level):
        print(' ',end='') #在一行中连续打印多个空格
    for j in range(2*current_level-1):
        print('*',end='') #在一行中连续打印多个*
    print()
"""
     *        
    ***       
   *****      
  *******     
 *********  
"""

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结语

  • 至此,python 流程控制与循环内容可以宣告结束啦
  • 编程语言的学最重要的是,一定要动手,要动手,动手…
    在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

go&Python

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

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

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

打赏作者

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

抵扣说明:

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

余额充值