程序流程控制

 

1、流程控制if

  1、当程序执行会产生多种情况但只需要一种情况时,需要进行判断程序的执行方向来得到想要的结果以及逻辑。

  2、if常用的组合

    1、if

if "条件语句":    # 条件语句返回的值为布尔值的True或False    
    "需要运行的代码"    # 满足条件语句时执行

      满足条件语句并返回一个True时,执行需要运行的代码,当整个if流程执行完成后,若整个流程下面还有代码,继续执行下面的代码

a = 10
b = 100
if b > a:
    print(a)  # 10

c = a + b  # if执行完成后执行
print(c)  # 110

 

    2、if...else...

if "条件语句":    # 条件语句返回的值为布尔值的True或False    
    "需要运行的代码1"    # 满足条件语句时执行
else:
    "需要运行的代码2"    # 不满足条件语句时执行

  满足条件语句并返回一个True时,执行需要运行的代码1,不满足条件语句并返回一个False时,执行需要运行的代码2。当整个if流程执行完成后,若整个流程下面还有代码,继续执行下面的代码。

a = 10
b = 100
if b > a:
    print(a)  # 满足b>a时执行  10
else:
    c = a + b  # 当b>a不成立时执行
    print(c)  # 110

    3、if...elif...elif...else...

if "条件语句1":    # 条件语句返回的值为布尔值的True或False    
    "需要运行的代码1"    # 满足条件语句时1执行
elif "条件语句2":   
    "需要运行的代码2"    # 满足条件语句2时执行
elif "条件语句3": 
    "需要运行的代码3"    # 满足条件语句3时执行
else:
    "需要运行的代码4"    # 不满足条件语句1、2、3时执行
score = input("your score: ")
score = int(score)  # 将得到的字符串类型的数据转为整形


if score >= 90:
    print('优秀')
elif score >= 80:
    print('良好')
elif score >= 70:
    print('普通')
else:
    print('')

  当输入的分数大于等于90时,满足条件1,输出优秀;当输入的分数小于90且大于等于80时,不满足条件1,满足条件2,输出良好;当输入的分数小于80且大于等于70时,条件1和2都不满足,此时满足条件3,输出普通;当输入的分数小于70时,不满足条件1、2、3,输出为差。

    4、if嵌套

      

if "条件语句1":
    "需要运行的代码1"    # 满足条件语句1时执行
    if "条件语句2":
    "需要运行的代码2"    # 满足条件语句2时执行
    else:
        "需要运行的代码22"    # 不满足条件语句2时执行
else:
    "需要运行的代码11"    # 不满足条件语句1时执行
    if "条件语句3": 
    "需要运行的代码3"    # 满足条件语句3时执行
    else:
        "需要运行的代码33"    # 不满足条件语句3时执行

      当判断条件有多个时,可以使用if嵌套使用,执行原理和if...else...执行原理相同

# if的嵌套
cls = 'human'
gender = 'female'
age = 18
is_success = False

if cls == 'human' and gender == 'female' and age > 16 and age < 22:
    print('开始表白')
    if is_success:
        print('那我们一起走吧...')
    else:
        print('我逗你玩呢')
else:
    print('阿姨好')

 

2、流程控制while

  1、对一段代码重复执行时,需要进行循环执行,此时就要用到while,再满足条件的情况下对一段代码循环执行。

  2、while常用组合

    1、while

while "条件语句""需要执行的代码"

  只要满足条件语句,则一直执行内部的代码。当不满足条件时或者内部执行的代码中有break时,退出此时所在的while循环;当执行内部代码过程中遇到continue时,跳出当前循环,执行下一次循环。

# continue
i = 0

while i < 5:
    i += 1
    if i == 3:
        continue  # 跳出当前循环
    else:
        print(i)  # 输出结果为1、2、4、5


# break
i = 0

while i < 5:
    i += 1
    if i == 3:
        break  # 跳出while循环,结束循环
    else:
        print(i)  # 输出结果为1、2

    2、while...else...

while "条件语句""需要执行的代码1"
else:
    "需要执行的代码2"

  只要满足条件语句,则一直执行内部的代码1。当不满足条件时,跳出while循环,执行else中要执行的代码2;当内部执行的代码中有break时,退出此时所在的while循环,不执行else中的代码2;当执行内部代码过程中遇到continue时,跳出当前循环,执行下一次循环。

# continue
# 输出结果为1、2、4、5  跳出循环了
i = 0

while i < 5:
    i += 1
    if i == 3:
        continue  # 跳出当前循环
    else:
        print(i)  # 输出结果为1、2、4、5
else:
    print("跳出循环了"# break
# 输出结果为1、2
i = 0

while i < 5:
    i += 1
    if i == 3:
        break  # 跳出while循环,结束循环
    else:
        print(i)  # 输出结果为1、2
else:
    print("跳出循环了吗?"

 

    3、while嵌套

while "条件语句1""需要执行的代码1"
    while "条件语句2""需要执行的代码2"
        while "条件语句3""需要执行的代码3"    

 

      while的执行和单个的while执行原理相同,但在执行退出循环的操作上略有不同。退出循环分为退出当前所在层次的循环和退出整个嵌套循环(以两层循环嵌套为例)

      1、退出当前所在层次的循环

        利用break完成。

# 退出内层循环的while循环嵌套
user_db = 'jason'
pwd_db = '123'
while True:
    inp_user = input('username: ')
    inp_pwd = input('password: ')
    if inp_user == user_db and pwd_db == inp_pwd:
        print('login successful')
        while True:
            cmd = input('请输入你需要的命令:')
            if cmd == 'q':
                break
            print('%s功能执行'%cmd)
    else:
        print('username or password error')
print('退出了while循环')

 

      2、退出整个嵌套循环

        方法一:

user_db = 'jason'
pwd_db = '123'
while True:
    inp_user = input('username: ')
    inp_pwd = input('password: ')
    if inp_user == user_db and pwd_db == inp_pwd:
        print('login successful')
        while True:
            cmd = input('请输入你需要的命令:')
            if cmd == 'q':
                break
            print('%s功能执行'%cmd)
        break
    else:
        print('username or password error')
print('退出了while循环')

  当嵌套层数过多时,方法一的太过麻烦,需要在每个循环后添加break,不太现实。由此引出了方法二。考虑到不满足条件时会退出循环,则定义一个标志位,需要时批更改标志位的布尔值,达到退出多层循环的目的。

        方法二:

# 退出双层循环的while循环嵌套
user_db = 'jason'
pwd_db = '123'
flag = True
while flag:
    inp_user = input('username: ')
    inp_pwd = input('password: ')
    if inp_user == user_db and pwd_db == inp_pwd:
        print('login successful')
        while flag:
            cmd = input('请输入你需要的命令:')
            if cmd == 'q':
                flag = False
                break
            print('%s功能执行'%cmd)
    else:
        print('username or password error')
print('退出了while循环')

  3、利用while循环取值

    

l = [1, 2, 3, 4, 5]
i = 0

while i < len(l):
    print(l[i])  # 利用素引查询
    i += 1

 

    当被查数据不能利用索引查询时,以上方法不适合查询。

 

3、流程控制for

  1、当取出的数据的内部元素时无序的时候,就不能利用while循环查询数据了,此时可以利用for循环

  2、for常用组合

    1、for

# for循环字典
info = {'name': 'jason', 'age': 19}
for item in info:
    print(item)  # 拿到字典所有的key
    print(info[item])  # 拿到字典所有的value

      for可以不依赖于索引取指,是一种通用的循环取指方式
      for的循环次数是由被循环对象包含值的个数决定的,而while的循环次数是由条件决定的

#for循环也可以按照索引取值

name_list =  ['jason', 'nick', 'tank', 'sean']
# for i in range(0,5):  # 5是数的
for i in range(len(name_list)):
    print(i, name_list[i])

 

    

for i in range(1, 10):  # range顾头不顾尾
    print(i)

# python2与python3中range的区别
# 在python2中
>>> range(1,100)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

>>> xrange(1,100)
xrange(1, 100)

# 在python3中
>>> range(1,100)
range(1, 100)

 

    

    2、for...break...

#跳出本层循环
# for+break

name_list = ['nick', 'jason', 'tank', 'sean']
for name in name_list:
    if name == 'jason':
        break
    print(name)

 

    3、for...continue...

# for+continue

# 跳出本次循环,进入下一次循环

# for+continue
name_list = ['nick', 'jason', 'tank', 'sean']
for name in name_list:
    if name == 'jason':
        continue
    print(name)

 

    4、for...else...

# for + else


name_list = ['nick', 'jason', 'tank', 'sean']
for name in name_list:
    if name == 'jason':
        continue
    print(name)
elseprint("执行完了")

 

    5、for嵌套

      先执行外层的for循环,每执行一次外层的for循环在执行内部的for循环,若内部还存在for循环嵌套,则继续执行内部for循环,直到内部没有for循环为止,将最内层的for循环执行完后,再一层一层的执行外层循环。

# 打印99乘法口诀表
'''
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
...
9*1=9.................9*9=81
'''
for i in range(1,10): #i=3
     for j in range(1,i+1):
         print('%s*%s=%s ' %(i,j,i*j),end='') #i=2 j=2
     print()

 

posted on 2019-07-02 14:30  so_interesting  阅读(119)  评论(0编辑  收藏  举报

导航