流程控制

流程控制

一. 分支结构

分支结构就是根据条件判断的真假去执行不同分支对应的子代码

1.1如何使用分支结构

1.1.1 if 语句

用if关键字来实现分支结构,完整语法如下

if 条件1:   # 如果条件1的结果为True,就依次执行:代码1、代码2,......
 代码1
   代码2
  ......
elif 条件2: # 如果条件2的结果为True,就依次执行:代码3、代码4,......
 代码3
   代码4
  ......
elif 条件3: # 如果条件3的结果为True,就依次执行:代码5、代码6,......
 代码5
   代码6
  ......
else:     # 其它情况,就依次执行:代码7、代码8,......
   代码7
   代码8
  ......
# 注意:
# 1、python用相同缩进(4个空格表示一个缩进)来标识一组代码块,同一组代码会自上而下依次运行
# 2、条件可以是任意表达式,但执行结果必须为布尔类型
    # 在if判断中所有的数据类型也都会自动转换成布尔类型
      # 2.1、None,0,空(空字符串,空列表,空字典等)三种情况下转换成的布尔值为False
      # 2.2、其余均为True

例题:登录功能

name=input('请输入用户名字:').strip()
password=input('请输入密码:').strip()
if name == 'tony' and password == '123':
   print('tony login success')
else:
   print('用户名或密码错误')

 

二. 循环结构

2.1 什么是循环结构

循环结构就是重复执行某段代码块

2.2 如何使用循环结构

2.2.1 while循环语句

while 条件:
    代码1    
    代码2    
    代码3
while的运行步骤:
步骤1:如果条件为真,那么依次执行:代码1、代码2、代码3、......
步骤2:执行完毕后再次判断条件,如果条件为True则再次执行:代码1、代码2、代码3、......,如果条件为False,则循环终止

img

 

案例一:while循环的基本使用

# 记录错误验证的次数
count = 0
while count < 3:
   inp_name = input("请输入用户名:")
   inp_pwd = input("请输入密码:")
   if inp_name == 'momo' and inp_pwd == 123:
       print("登陆成功")
   else:
       print("输入的用户名或密码错误!")
       count += 1

 

案例二:while+break的使用

# 记录错误验证的次数
count = 0
while count < 3:
   inp_name = input("请输入用户名:")
   inp_pwd = input("请输入密码:")
   if inp_name == 'momo' and inp_pwd == 123:
       print("登陆成功")
       break # 用于结束本层循环
   else:
       print("输入的用户名或密码错误!")
       count += 1

 

案例三:while循环嵌套+break

如果while循环嵌套了很多层,要想退出每一层循环则需要在每一层循环都有一个break。

count = 0
while count < 3:  # 第一层循环
   inp_name = input("请输入用户名:")
   inp_pwd = input("请输入密码:")
   if inp_name == 'momo' and inp_pwd == 123:
       print("登陆成功")
       while True:  # 第二层循环
           cmd = input('>>: ')
           if cmd == 'quit':
               break  # 用于结束本层循环,即第二层循环
           print('run <%s>' % cmd)
       break  # 用于结束本层循环,即第一层循环
   else:
       print("输入的用户名或密码错误!")
       count += 1

 

案例四:while循环嵌套+tag的使用

针对嵌套多层的while循环,如果我们的目的很明确就是要在某一层直接退出所有层的循环,其实有一个窍门,就让所有while循环的条件都用同一个变量,该变量的初始值为True,一旦在某一层将该变量的值改成False,则所有层的循环都结束

count = 0
tag = True
while tag:
   inp_name = input("请输入用户名:")
   inp_pwd = input("请输入密码:")
   if inp_name == 'momo' and inp_pwd == 123:
       print("登陆成功")
       while tag:  
           cmd = input('>>: ')
           if cmd == 'quit':
               tag = False  # tag变为False, 所有while循环的条件都变为False
               break
           print('run <%s>' % cmd)
       break  # 用于结束本层循环,即第一层循环
   else:
       print("输入的用户名或密码错误!")
       count += 1

 

案例五:while+continue的使用

break代表结束本层循环,而continue则用于结束本次循环,直接进入下一次循环

# 打印1到10之间,除7以外的所有数字
number=11
while number>1:
   number -= 1
   if number==7:
       continue # 结束掉本次循环,即本次循环continue之后的代码都不会运行了,而是直接进入下一次循环
   print(number)

 

案例六:while+else的使用

在while循环的后面,我们可以跟else语句,当while 循环正常执行完并且中间没有被break 中止的话,就会执行else后面的语句,所以我们可以用else来验证,循环是否正常结束

count = 0
while count <= 5 :
count += 1
if count == 3:
break
print("Loop",count)
else:
print("循环正常执行完啦")
print("-----out of while loop ------")
输出
Loop 1
Loop 2
-----out of while loop ------ #由于循环被break打断了,所以不执行else后的输出语句

 

2.2.2 for循环语法

循环结构的第二种实现方式是for循环,for循环可以做的事情while循环都可以实现,之所以用for循环是因为在循环取值(即遍历值)时for循环比while循环的使用更为简洁

for循环语法如下

for 变量名 in 可迭代对象: # 此时只需知道可迭代对象可以是字符串\列表\字典,我们之后会专门讲解可迭代对象
代码一
代码二
...

 

案例一:打印数字

# 简单版:for循环的实现方式
for count in range(6): # range(6)会产生从0-5这6个数
print(count)

 

案例二:遍历字典

# 简单版:for循环的实现方式
info = {'name':'jason','age':18,'gender':'male'}
for k in info: # for 循环默认取的是字典的key赋值给变量名k
print(k,info[k])

 

注意:break 与 continue也可以用于for循环,使用语法同while循环

 

注:for+enumerate的使用:会输出列表的索引和元素

nums = [111, 222, 333, 444, 555]
for i,num in enumerate(nums):
print(i,num)

 

练习一

打印九九乘法表

for i in range(1,10):
for j in range(1,i+1):
#print('{}*{}={}\t'. format(j,i,i*j),end='')
#print(f'{j}*{i}={i*j}\t',end='')
print('%s*%s=%s\t' %(j,i,i*j),end='')
print()

 

练习二

打印金字塔

# 分析
'''
#max_level=5
* # current_level=1,空格数=4,*号数=1
*** # current_level=2,空格数=3,*号数=3
***** # current_level=3,空格数=2,*号数=5
******* # current_level=4,空格数=1,*号数=7
********* # current_level=5,空格数=0,*号数=9

# 数学表达式
空格数=max_level-current_level
*号数=2*current_level-1
'''
# 实现:
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()

 

posted @ 2021-09-26 10:36  vonmo  阅读(49)  评论(0编辑  收藏  举报