流程控制

188 阅读6分钟

流程控制之分支结构

什么是分支结构

分支结构就是通过条件的判断结果(True/False)分别执行不同的代码块
分支结构渗透在我们生活中的方方面面,例如:
数学成绩及格了没有?
    成绩大于60  及格   
    小于60  不及格

如何使用分支结构

1.if分支  #if后面跟上判断条件。注意判断条件可以是任意表达式,但它的值一定是布尔值
	age = 18
	if age < 30:
    	print('小姐姐')
        
2.if...else分支
    age = 18
    if age < 30:
        print('小姐姐')
    else:
        print('大妈')
        
3.if...elif...else分支
	score = input('请输入你的成绩:')
    score = int(score)
    if(score > 90):
        print('优秀')
    elif(score > 80):
        print('良好')
    elif(score > 60):
        print('及格')
    else:
        print('挂科')
        
4.if多层嵌套
	if 条件表达式1:
        结果1
        if 条件表达式2:
            结果2
            if 条件表达式3;
            	结果3
            else:
                结果3得反面
		else:
            结果2得反面
     else:
        结果1的反面

分支结构小练习

根据用户输入内容打印其权限
    jason --> 超级管理员
    tom  --> 普通管理员
    jack,rain --> 业务主管
    其他 --> 普通用户
    
    name = input('请输入您的姓名:')
    if name == 'jason':
        print('超级管理员')
    elif name == 'tom':
        print('普通管理员')
    elif name in ('jack' , 'rain'):
        print('业务主管')
    else:
        print('普通用户')
    #请输入您的姓名:jason
	#超级管理员
        

流程控制之while循环

while后面跟循环条件  下面跟循环执行的子代码
1.先判断while后面的循环条件是否成立,若成立则执行子代码
2.子代码运行完毕后,再次回到循环条件除判断 循环条件是否成立  依次往复
3.若循环条件不成立,则循环结束,开始执行下面的代码
    count = 1
    while count < 11:
        print(count)
        count += 1
    # 打印1-10
    
# 结束循环的方式:
#    while后面的条件判断(规定5:00下班)
#   自己在循环体中加关键字强制结束(特殊情况,4:00下班)

while与break

break:结束本层循环(整个循环)
    while True:
        print('我是外层循环')
        while True:
            print('我是内层循环')
        break
    # 外,内,内,内......

while与continue

continue:结束本次循环(单次循环)   
    count = 1
    while count < 11:
        if count == 7:
            count += 1
            continue
        print(count)
        count += 1
    #打印1-10 除7以外的数字

while与else

count = 1
while count < 11:
    print(count)
    if count == 7:
        break
    count += 1
else:
    print('循环体按照提前定义好的条件正常结束 则会执行')

死循环与全局标志位

1.死循环
	a = 10
        while True:
            a *= 10
            print(a)
    # 死循环永远不会结束,吃内存,无意义,尽量避免
2.全局标志位(可以不用)
	flag = True
        while flag:
            print(123)
            while flag:
                print(321)
                while flag:
                    print(222)
                    flag = False

流程控制之for循环

1.for的引入
    l1 = ['jason', 'kevin', 'tony', 'oscar']# 循环打印出列表中每一个数据值
    如果用while循环
        i = 0
        while i <= 3:
            print(l1[i])
            i += 1  #需要四行代码
    如果用for循环
    	for i in l1:
            print(i)  #只需两行代码
    # for循环能做到的while循环都能做到,但是for循环更加简短,尤其擅长循环取值
2.语法结构
	for 变量名  in  可迭代对象:  # 可迭代对象:(字符串,字典,列表,元组等)
        for循环的循环体代码
3.常见的取值操作
	user_dict = {
        'username': 'jason',
        'pwd': 123,
        'age': 18
    }
    for i in user_dict:
        print(i)  # for循环字典,默认只能取到字典的key值    
    desc = 'hello baby! 你会感谢少时奋斗的自己'
    for i in desc:
        print(i)  # for循环字符串 默认每次取单个字符
4.for + break
    # 1-10  7结束
    for i in range(1,11):
        if i == 7:
            break
        print(i)
5.for + continue
	# 1-10  跳过7
    for i in range(1, 11):
        if i == 7:
            continue
        print(i)
6.for + else
    for i in range(10):
        print(i)
        if i == 5:
            break
    else:
        print('嘿嘿嘿 猜猜我什么时候执行')
        # else配合for一起使用 当for循环没有被强制结束的情况下 循环体结束之后运行else子代码
        
7.循环数据类型的时候尽量不要修改数据类型内部的数据值个数
	 '''不允许出现下列情况'''
	l1 = [1, 2, 3, 4]
        for i in l1:
            l1.pop()
            print(l1, i)

range方法

1.range方法可以看做是能够帮助我们产生一个包含多个数据值的列表

for i in range(10):
    print(i) # 打印0-10  括号内只有一个数字,就是从0开始,到该数字 -1 结束(顾头不顾尾,左包含右不包含)
for j in  range(1,10):
    print(j) # 打印1-9  括号内有两个数字,从第一个数字开始,到第二个数字 -1 结束(左包含右不包含)
for k in range(0,100,20):
    print(k) #打印0,20,40,60,80  括号内有三个数字,最后一个是数据的间隔(等差数列)
    
'''    
2.range在python2和python3中的区别
    python2中的range()返回的是一个列表。当数据量很大的时候可能会造成内存溢出(爆满)
    python2中的xrange()其实就是python3中的range()
    python3中的range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。
'''

3.range方法实操
#自动编写博客园前一百页的网址
    https://www.cnblogs.com/  第一页
    https://www.cnblogs.com/#p2  第二页
    https://www.cnblogs.com/#p3  第三页
    https://www.cnblogs.com/#p4  第四页
    
    # 提前定义好一个模板
    base_url = 'https://www.cnblogs.com/#p%s'
    for i in range(1, 101):
        print(base_url % i)


作业

1.准确说出下列判断的结果(不要执行代码)
    v1 = 1 or 3   #1 
    v2 = 1 and 3   #3
    v3 = 0 and 2 and 1   #0
    v4 = 0 and 2 or 1   #1
    v5 = 0 and 2 or 1 or 4   #1
    v6 = 0 or False and 1   #False
    
2.编写一个用户登录程序
	用户如果登录失败 则只能尝试三次
	用户如果登录成功 则直接结束程序
    '''
    count = 1
    while count < 4:
        username = input('请输入账户:')
        password = input('请输入密码:')
        if username == 'zhangsan' and password == '123':   
            print('登录成功')
            break
        else:
            count += 1
    '''
   
3.编写一个用户登录程序
	用户如果登录失败 可以无限制尝试
	用户如果登录成功 则进入内层循环 获取用户输入的指令 并打印该指令
    	eg: 用户输入cmd指令 则程序打印'正在执行您的指令:cmd'
	给用户提供一个退出命令 用户一旦输入则退出这个程序
    	eg: 用户输入q指令 则程序先打印该指令再结束
    '''
    while True:
    username = input('请输入您的账号:')
    password = input('请输入您的密码:')
    while username == 'zhangsan' and password == '123':
        command = input('请输入您的指令:')
        if command != 'q':
            print('正在打印您的指令:', command)
        else:
            print('已退出该次循环')
            break
    '''
   
4.编写猜年龄的游戏(拔高练习 尝试编写)
	用户有三次猜测的机会 如果用完则提示用户是否继续尝试
	用户输入y则继续给三次机会 如果用户输入q则直接结束程序
    '''
    count = 1
    while count < 4:
        guess = input('请输入您的猜测结果:')
        if guess != '19':
            count += 1
            if count == 4:
                attempt = input('您已经尝试三次了,是否还要尝试? y继续 q退出')
                if attempt == 'y':
                    count = 1
                    continue
                elif attempt == 'q':
                    break
        else:
        	print('猜对了')
            break
     '''