python语法入门之流程控制
流程控制
1、概念
控制事物的执行流程就是流程控制
2、执行流程的三种情况
顺序结构:自上而下运行
分支结构:在运行过程中根据条件的不同可能会执行不同的流程
循环结构:在运行过程中会有些代码需要反复执行
3、必知必会
1、条件都会转成布尔值,从而决定子代码是否执行
2、在python中,使用缩进来代表代码的从属关系(四个空格)
3、并不是所有的代码都可以拥有子代码
4、同属于某个代码的多行子代码,必须保持相同的缩进量
小技巧:在上一行代码的结尾如果是冒号,那么下一行代码比缩进
if语法
1、单分支(单if)
#语法:
# if 条件: # 条件成立之后执行的代码块 #示例: age = 18 if age < 20: print('你很漂亮')
2、双分支(if 和else一起使用)
#语法:
# if 条件1: # 条件1成立之后执行的代码块 # else : # 条件不成立后执行的代码块 #示例: age = 29 if age < 20: print('你很漂亮') else: print('认错人了')
3、多分支(if、elif以及else共同使用)
#语法:
# if 条件1: # 条件1成立之后执行的代码块 # elif 条件2: # 条件1不成立条件,2成立之后执行的代码块 # else 条件3: # 条件1和2都不成立,条件3成立之后执行的代码块 #示例: age = 19 if age < 20: print('你很漂亮') elif age <29: print('你好啊') else: print('不好意思认错人了')
4、if嵌套
age_of_girl = 20 height = 171 weight = 99 is_pretty = True success = False if age_of_girl >= 20 and age_of_girl < 22 and height > 170 and weight < 100 and is_pretty == True: if success: print('表白成功,在一起') else: print('下次再见') else: print('阿姨好')
小练习
# jason管理员 tony安保人员 kevin财务 jack销售 其他普通员工 # 1.获取用户名 username = input('你的名字:') # 2.判断用户名身份 if username == 'jason': print('管理员') elif username == 'tony': print('安保') elif username == 'kevin': print('财务') elif username == 'jack': print('销售') else: print('普通员工')
while循环
1、语法
while 条件: 条件成立之后执行的子代码块
2、基本用法示例
i = 1 while i <= 5: print(i) i += 1
3、while+break
break:结束本层循环
while True: # 1.获取用户输入的用户名和密码 username = input('username>>>:') password = input('password>>>:') # 2.判断用户名和密码是否正确 if username == '小明' and password == '123': print('输入正确') # 直接结束本层循环 break else: print('输入错误')
4、全局标志位
tag = True while tag: # 1.获取用户输入的用户名和密码 username = input('username>>>:') password = input('password>>>:') # 2.判断用户名和密码是否正确 if username == '小明' and password == '123': print('输入正确') # 直接结束本层循环 tag = False else: print('输入错误')
5、while嵌套
# while嵌套 while True: # 1.获取用户输入的用户名和密码 username = input('username>>>:') password = input('password>>>:') # 2.判断用户名和密码是否正确 if username == '小明' and password == '123': print('输入正确') while True: cmd = input('请输入您的指令>>>:') # 判断用户是否想退出 if cmd == 'q': break print('正在执行您的指令:%s' % cmd) break else: print('输入错误')
案例:
猜年龄的游戏 普通要求 用户可以有三次猜错的机会 如果过程中猜对了直接退出 拔高要求 三次机会用完之后提示用户是否继续尝试 如果是则再给三次机会 如果否则直接结束 普通要求 # 1.先编写猜年龄主体功能 # 定义一个真实的年龄 real_age = 18 # 3.定义一个计数器 count = 1 # 2.先加一个循环功能 while count < 4: # 1.1 获取用户猜测的年龄 guess_age = input('请输入您猜测的年龄>>>:') # 1.2 简单粗略的将字符串转换成数字(可能会报错 暂时不要考虑) guess_age = int(guess_age) # 1.3 猜测年龄 if guess_age > real_age: print('猜大了') # 4.1 每次猜错都加一 count += 1 elif guess_age < real_age: print('猜小了') # 4.1 每次猜错都加一 count += 1 else: print('哎呀 你真棒 猜对了!!!') # 4.猜对了直接结束本层循环 break # 优化 # count += 1 拔高要求 # 1.先编写猜年龄主体功能 # 定义一个真实的年龄 real_age = 18 # 3.定义一个计数器 count = 1 # 2.先加一个循环功能 while True: # 5.判断当前用户是第几次尝试 if count == 4: choice = input('您已经尝试了三次 是否继续(y/n)>>>:') # 5.1 判断用户输入的是y还是n if choice == 'y': # 重置count的次数 count = 1 else: print('再接再厉') break # 1.1 获取用户猜测的年龄 guess_age = input('请输入您猜测的年龄>>>:') # 1.2 简单粗略的将字符串转换成数字(可能会报错 暂时不要考虑) guess_age = int(guess_age) # 1.3 猜测年龄 if guess_age > real_age: print('猜大了') # 4.1 每次猜错都加一 count += 1 elif guess_age < real_age: print('猜小了') # 4.1 每次猜错都加一 count += 1 else: print('哎呀 你真棒 猜对了!!!') # 4.猜对了直接结束本层循环 break # 优化 # count += 1
6、while+continue
continue表示结束本次循环,直接进入下一次循环
# 使用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会让循环体代码直接回到条件判断处重新判断
7、while+else
count = 0 while count < 5: print(count) count += 1 else: print('呵呵') # 会执行else子代码 count = 0 while count < 5: if count == 3: break print(count) count += 1 else: print('呵呵') # 不会执行else子代码 """ 当while循环没有被人为中断(break)的情况下才会走else """
8、死循环
while True: print(1)
for循环
for循环可以做的事情while都可以做,之所以使用for循环是在循环取值时,for循环比while循环的使用更为简洁
1、语法
for 变量名 in 可迭代对象:#(此时只需要知道可迭代对象是字符串、列表、字典,后面会专门讲解) 代码一 代码二
ps:变量名如果没有合适的名称 那么可以使用i,j,k,v,item等
演示
# 列表 for i in ['a','b','c']: print(i) # 字符串 for i in 'hello world': print(i) # 字典 d = {'name': '小明', 'age': 18, } for k in d: print(k, d[k])
2、range关键字
# 第一种:一个参数 从0开始 顾头不顾尾 for i in range(10): # 0,1,2,3,4,5,6,7,8,9 print(i) # 第二种:两个参数 自定义起始位置 顾头不顾尾 for i in range(4, 10): #4,5,6,7,8,9 print(i) # 第三种:三个参数 第三个数字用来控制等差值 for i in range(2, 100, 10): # 2,12,22,32,42,52,62,72,82,92 print(i)
range在不同版本的解释器中 本质不同 在python2.X中range会直接生成一个列表 在python2.X中有一个xrange也是迭代器 在python3.X中range是一个迭代器 节省内存空间 '''python2.X中xrange就是python3.x里面的range'''
具体如下
python2
python3
3、for+break
# break功能也是用于结束本层循环h和while循环一样的作用 for i in range(10): if i == 4: break print(i)
4、for+continue
# continue功能也是用于结束本层循环h和while循环一样的作用 for i in range(10): if i == 4: continue print(i)
5、for+else
# else也是在for循环正常结束的情况下才会执行和while循环一样的作用 for i in range(10): if i == 4: break print(i) else: print('123')
6、for循环嵌套
# ***** # ***** # ***** for i in range(3): for j in range(5): print("*", end='') print() # print()表示换行
# 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 for i in range(1, 10): for j in range(1, i + 1): print('%s*%s=%s' % (i, j, i * j), end=' ') print()
# * # *** # ***** # ******* # ********* 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()