流程控制之 IF 和 while

一、条件

  条件可以是:

    1.显示布尔值(比较运算符,也可以是True和false)

    2.y隐式布尔值(所有的值都可以当成条件,其中0、None、空【空字符串、空列表、空字典】代表的布尔值为Flase)

  逻辑运算符:not 、and、or、

    not:把紧跟后面的条件结果取反

    and:连接左右两个条件,所有条件都为True,j结果才为True

    or:连接左右两个条件,只要有一个条件为True,结果就为True;若两个条件都为Flase,结果才为Flase。

  优先级:not > and > or

  成员运算符:in、

print('name' in {'name':'bob','age':'123','male':'man'}) #在字典中 要用Key来判断,不能用value
print('name' in ['name','bob','age','123','male','man'])#在列表中

  身份运算符 : is  (判断ID是否相等)

二、流程控制之if判断

  语法一:

if 条件:
    代码1
    代码2
    代码3

  语法二:

if 条件:
    代码1
    代码2
    代码3
else:#条件不成立,才运行
    代码1
    代码2
    代码3

  语法三:

if 条件2:
    代码1
    代码2
    代码3
elif 条件2:#添加额外的条件(可添加多个,但只要条件成立一个,后面就不再运行)
    代码1
    代码2
    代码3

  语法四:

if 条件1:
    代码1
    代码2
    代码3
elif 条件2:#添加额外的条件(可添加多个,但只要条件成立一个,后面就不再运行)
    代码1
    代码2
    代码3
else:#上述条件都不成立,才运行
    代码1
    代码2
    代码3

三、短路运算

  偷懒原则,偷懒到哪里,就把当前值返回

num_1 = 10 > 3 and 98 < 23 or 78 == 78 and 90 > 23
print(num_1)

四、深浅copy

    浅copy:针对不可变和可变类型没有进行区分(只COPY了第一层)

list1=['name','age',42]
list2=list.copy(list1)#把原列表第一层的内存地址不区分的一模一样拷贝一份
print(list1)   =======》['name', 'age', 42]
print(list2)   =======》['name', 'age', 42]

    深copy: (每一层都进行了copy)

       针对可变类型进行区分对待,值还是用原来的值。(copy一个列表,并且改操作完全与原列表独立开)

五、流程控制之While循环

  语法:

while 条件:
    代码1
    代码2
    代码3
count = 0
while count < 6:#t条件循环 ,条件成立一直循环
    print(count)
    count += 1
print('棒棒棒')

  死循环

    纯计算无IO的死讯会导致致命的效率问题

  

while 1:  #如有必要可这样写

while ture:

   应用:

name = 'JAKE'
sercrt = 'asd'
while True:#只要条件为真就一直循环
    inp_name = input('请输入你的账号:')
    inp_password = input('请输入你的密码:')

    if inp_name == name and inp_password == sercrt:
        print('登入成功')
    else:
        print('请重新登入')

 

    退出循环:

      方式一:

 

name = 'JAKE'
sercrt = 'asd'
exit_1 = True
while exit_1:  # 只要条件为真就一直循环
    inp_name = input('请输入你的账号:')
    inp_password = input('请输入你的密码:')

    if inp_name == name and inp_password == sercrt:
        print('登入成功')
        exit_1 = False
    else:
        print('请重新登入')

 

      方式二:break,只要运行到break就会结束本层循环

name = 'JAKE'
sercrt = 'asd'
while True:
    inp_name = input('请输入你的账号:')
    inp_password = input('请输入你的密码:')

    if inp_name == name and inp_password == sercrt:
        print('登入成功')
        break  # 结束本层循环
    else:
        print('请重新登入')
#每一层循环的结束都需要Break来结束本层的循环
while True:
    while True:
        while True:
            break
        break
    break

 

    while循环嵌套:

name = 'JAKE'
sercrt = 'asd'
tag = True
while tag:
    inp_name = input('请输入你的账号:')
    inp_password = input('请输入你的密码:')

    if inp_name == name and inp_password == sercrt:
        print('登入成功')
        while tag:
            amd = input('请输入你要进行的操作:')
            if amd == 'q':
                tag = False
            else:
                print('命令{x}正在运行,'.format(x=amd))

    else:
        print('请重新登入')

    while + continue:#结束本次循环,直接进入下一次。(在continue之后添加同级代码毫无意义,无法运行到)  

count = 0
while count <= 5:
    if count == 3:
        count += 1
        continue
    print(count)
    count += 1

    while + else:(else包含的代码会在while循环结束后,并且没有被break打断才会执行)

name = 'JAKE'
sercrt = 'asd'
count = 0
while count < 3:
    inp_name = input('请输入你的账号:')
    inp_password = input('请输入你的密码:')

    if inp_name == name and inp_password == sercrt:
        print('登入成功')
        while True:
            amd = input('请输入你要进行的操作:')
            if amd == 'q':
                break
            else:
                print('命令{x}正在运行,'.format(x=amd))
        break
    else:
        print('请重新登入')
        count += 1
else:
    print('输错账号密码三次。')

 

posted @ 2020-12-30 21:49  HolmesWu  阅读(121)  评论(0编辑  收藏  举报