文章目录

  • 流程控制
  • 分支结构
  • if语句之嵌套
  • if练习题1:
  • if练习题2:
  • 循环结构
  • while循环
  • while+break
  • 标志位的使用
  • while+continue
  • while+else
  • for循环
  • range关键字
  • 死循环
  • for+break
  • for+continue
  • for+else
  • for循环的嵌套


流程控制

1. 流程控制?
	即控制代码执行的先后顺序。
    
2. 种类:
	在python中,流程控制一共有3种:
		- 顺序结构: 执行顺序从上到下依次执行(如果没有其他的特殊条件,默认为该结构)。
    	- 分支结构: 执行某段程序时候,有多种选择,需要判断条件是否成立,根据判断结果执行不同的流程。
    	- 循环结构: 重复执行某件事情或某段代码。
分支结构
1. 单分支结构	
    1.1 关键字: if

	1.2 结构:
        '''
        if 条件:
            条件成立需要执行的子代码块
        '''

    1.3 注意事项:
        1) 条件成立,执行子代码块,子代码块需要缩进;
        2) 一般冒号后面的都要缩进;
        3) 同属于一个代码块的子代码块,缩进量必须一样,同一代码块执行从上而下依次执行;
        4) 条件可以是任意表达式,但执行结果必须为布尔类型。
    
	1.4 示例:
    	age_of_girl = 35
		if age_of_girl < 24:
    		print('小姐姐')
    
2. 双分支结构:
	2.1 关键字:
    	if else
	
    2.2 结构:
    	'''
            if 条件:
                条件成立执行该子代码块
            else:
                条件不成立,执行此子代码块
        '''
     
    2.3 示例:
    	age_of_girl = 35
        if age_of_girl < 24:
            print('小姐姐')
        else:
            print('阿姨好')

    2.4 注意:
        "在双分支中if 条件子代码块和else 子代码块,两者只能执行一个"
	
    练习题:
    age = 22
    height = 165
    weight = 90
    is_beautiful = True
    if age < 24 and height > 160 and weight <100 and is_beautiful:
        print('我们可以处对象嘛!')
    else:
        print('我们不合适!')
    
    
3. 多分支结构
	3.1 结构:
        '''
        if 条件:
            条件成立之后执行的代码
        elif 条件1:
            条件不成立,条件1成立之后,执行的代码
        elif 条件2:
            条件和条件1都不成立,条件2成立执行的代码
        ...
        else:
            以上条件都不成立,执行的代码块
        '''
        
    3.2 注意:
    	    "else不是一定要写的"
        
    3.3 示例:
        score = 20
        if score >= 90:
            print('A')
        elif score >= 80:
            print('B')
        elif score >= 70:
            print('C')
        elif score >= 60:
            print('D')
        else:
            print('E')
if语句之嵌套
age = 22
height = 165
weight = 90
is_beautiful = True
is_success = False
if age < 24 and height > 160 and weight < 100 and is_beautiful:
    print('小姐姐加个微信?')
    if is_success:
        print('吃饭,看电影......')
    else:
        print('滚犊子')

else:
    print('滚犊子')
if练习题1:
# 实现登录功能,用户名是:mark, 密码:123;登录成功之后,打印:登录成功,否则,登录失败

代码实现:
    # 接收用户输入的用户名
    username = input('请输入用户名:')
    password = input('请输入密码:')
    # 补充
    password = int(password)
    if username == 'mark' and password == 123:
        print('登录成功')
    else:
        print('登录失败')
if练习题2:
# 如果用户输入用户姓名,就打印其职务,否则打印其他人员;例如输入mark,打印管理员。

代码实现:
    # 先让用户输入用户名
    username = input('请输入用户名:')
    if username == 'mark':
        print('管理员')
    elif username == 'smith':
        print('前端')
    elif username == 'tom':
        print('后端')
    else:
        print('其他人员')
循环结构
while循环
1. 结构:
    '''
        while 条件:
            条件成立之后的代码块
    '''

2. 示例:
    while True:
        username = input('请输入用户名:')
        password = input('请输入密码:')
        # 补充
        if username == 'mark' and password == '123':
            print('登录成功')
        else:
            print('登录失败')
while+break
# 基于上面示例,虽然登录成功,但还是显示输入用户名,理应是登录成功,就跳出循环,因此有了break
    while True:
        username = input('请输入用户名:')
        password = input('请输入密码:')
        # 补充
        if username == 'mark' and password == '123':
            print('登录成功')
            # 结束本层循环
            break
        else:
            print('登录失败')
    print(123)


注意:break跳出的只是本层循环
# 验证break跳出的是本层循环
while True:
    username = input('请输入用户名:')
    password = input('请输入密码:')
    # 补充
    if username == 'mark' and password == '123':
        print('登录成功')
        while True:
            cmd = input('请输入你的指令:')
            print('正在执行你的指令:%s' % cmd)
            if cmd == 'q':
                break
        break
    else:
        print('登录失败')
标志位的使用
# 标志位的使用:
    flag = True
    while flag:
        username = input('请输入用户名:')
        password = input('请输入密码:')
        if username == 'mark' and password == '123':
            print('登录成功')
            while flag:
                cmd = input('请输入你的指令:')
                print('正在执行你的指令:%s' % cmd)
                if cmd == 'q':
                    flag = False
        else:
            print('登录失败')
while+continue
1.问题前提:使用循环打印出0-9的数字
    count = 0
    while count < 10:
        print(count)
        count += 1

2. 如果修改问题为:使用循环打印出0-9的数字,但是不打印3,该如何进行?
	解决:需要使用到continue关键字,结束本次循环
    count = 0
    while count < 10:
        if count == 3:
            count += 1
            continue
        print(count)
        count += 1
    
注意:continue只是结束本次循环,碰到continue,会立马执行循环条件的判断。
while+else
# while+else示例1:
    count = 0
    while count < 5:
        print(count)
        count += 1
    else:  # 没有break打断时,会执行else代码块
        print('我执行了')

# 示例2:
    count = 0
    while count < 5:
        if count == 3:
            break
        print(count)
        count += 1
    else:  # 如果遇到break打断循环,则不执行else代码块
        print('我执行了')
    
# 一般情况,else跟if连用,但是不局限于if
总结:当没有人为终断循环体时候,会执行else,否则,不走else
for循环
# for循环能实现的功能,while循环都可以实现,但是for的语法更简洁,取值更方便

问题:逐个打印hobby_list中的元素?
	hobby_list = ['basketball','tea','game','short_video']

# 使用while循环实现,打印出每一个元素
    hobby_list = ['basketball','tea','game','short_video']
    count = 0
    while count < 4:
        print(hobby_list[count])
        count += 1
  
# for循环实现
    hobby_list = ['basketball','tea','game','short_video']

    for i in hobby_list:
        print(i)
    
语法结构:
    '''
        for i in 可迭代对象:  # 可迭代对象指字符串,列表,元祖,字典,集合...
            print(i)
	'''

注意:
	1. for循环的循环对象不能为数字:
        for i in 1.123:
            print(i)    # 报错  TypeError: 'float' object is not iterable

	2. 当循环对象为字典时,循环字段暴露的是key
    	d = {'username': 'mark', 'password': 123}
        for i in d:
            # print(i)
            print(i, d[i])  # d['username']
    
'''
	for i in d: 里面的i值可以是任意的变量,如果没有好的变量名,一般叫i, j, k, v, item等
'''
range关键字
1. 第一种玩法:# 只写一个参数的情况,代表从0开始的有序数字,顾头不顾尾
	for i in range(10):
        print(i)
    # 执行结果:0 1 2 3 4 5 6 7 8 9    
        
2. 第二种玩法: # 写两个参数,可以自定义起始位置,顾头不顾尾
	for i in range(3,10):
        print(i)
    # 执行结果:3 4 5 6 7 8 9
    
3. 第三种玩法:# 写三个参数,第三个参数代表步长,顾头不顾尾
	for i in range(0,100,10):
        print(i)
    # 执行结果:0 10 20 30 40 50 60 70 80 90
        
        
# 扩展知识:
    https://movie.douban.com/top250?start=0&filter=
    https://movie.douban.com/top250?start=25&filter=
    https://movie.douban.com/top250?start=50&filter=
    https://movie.douban.com/top250?start=75&filter=
    https://movie.douban.com/top250?start=100&filter=
    
代码实现:
    base_url = 'https://movie.douban.com/top250?start=%s&filter='
    for i in range(0, 250, 25):
        print(base_url % i)
死循环
while True:
    print(1)

# 死循环的情况是不能出现的

# 实际项目中,推荐使用for循环,一般不会造成死循环
for+break
for i in range(10):
    if i == 3:
        break
    print(i)
    
# 执行结果:0 1 2
for+continue
for i in range(10):
    if i == 3:
        continue
    print(i)
    
# 执行结果:0 1 2 4 5 6 7 8 9
for+else
for i in range(10):
    if i == 3:
        break
    print(i)
else:
    print('我执行了')
for循环的嵌套
for i in range(2):
    for j in range(2):
        print(i, j)

# 执行结果:
0 0
0 1
1 0
1 1
2 0
2 1
3 0
3 1