python入门day06——流程控制之if判断、while循环、for循环

一、流程控制之if判断

if判断的完整语法:

if 条件:(可以是if 10 if 10 and 20)
代码1
代码2
代码3
...
elif 条件2:
代码1
代码2
代码3
...
elif 条件3:
代码1
代码2
代码3
...
else:
代码1
代码2
代码3
...

运行原理示范
print(1111)
print(2222)
if True:
print('if的子代码1')
print('if的子代码2')
print('if的子代码3')
print(333)

1、语法1

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

# 应用案例
gender = 'female'
age = 18
is_beautiful = True

if gender == 'female' and 18 <= age <= 60 and is_beautiful:
    print('开始表白。。。')
print('后续代码...')
# 开始表白。。。
# 后续代码...

2、语法2

"""
if 条件1:
代码1
代码2
代码3
...
else:
代码1
代码2
代码3
...
"""

gender = 'female'
age = 99
is_beautiful = True

if gender == 'female' and 18 <= age <= 60 and is_beautiful:
    print('开始表白。。。')
else:
    print('阿姨好,开个玩笑...')
print('后续代码...')
# 阿姨好,开个玩笑...
# 后续代码...

3、语法3

"""
if 条件1:
代码1
代码2
代码3
...
elif 条件2:
代码1
代码2
代码3
...
else:
代码1
代码2
代码3
...
"""

score = input('请输入你的成绩: ')
score = int(score)

if score >= 90:
    print('优秀')
elif 80 <= score:
    print('良好')
elif score >= 70:
    print('普通')
else:
    print('很差')
# 请输入你的成绩: 88
# 良好

2、语法4

"""
if的嵌套
"""

age = 17
is_beautiful = True
star = '水平座'

if 16 < age < 20 and is_beautiful and star == '水平座':
    print('开始表白。。。。。')
    is_successful = True
    if is_successful:
        print('两个从此过上没羞没臊的生活。。。')
else:
    print('阿姨好,我逗你玩呢,深藏功与名')

print('其他代码.............')
# 开始表白。。。。。
# 两个从此过上没羞没臊的生活。。。
# 其他代码.............

二、流程控制之while循环

"""
语法:
while 条件:
代码1
代码2
代码3
...

基本使用1:
print('start.....')
while 10 < 3:
print('hello1')
print('hello2')
print('hello3')

print('end....')

基本使用2:
count = 0
while count < 6: # 6 < 6
print(count)
count += 1

print('end.....')
"""

1、基本使用

db_name = "sa"
db_pwd = "123"

while True:
    inp_name = input("请输入您的用户名: ")
    inp_pwd = input("请输入您的密码: ")

    if inp_name == db_name and inp_pwd == db_pwd:
        print("用户登录成功")
    else:
        print("用户账号或密码错误"

2、如何结束while循环

(1)把条件改为False

db_name = "sa"
db_pwd = "123"

tag = True
while tag:
    inp_name = input("请输入您的用户名: ")
    inp_pwd = input("请输入您的密码: ")

    if inp_name == db_name and inp_pwd == db_pwd:
        print("用户登录成功")
        tag = False
    else:
        print("用户账号或密码错误")

    print('其他。。。。。。。。。')

(2)break:直接终止本层循环

db_name = "sa"
db_pwd = "123"

while True:
    inp_name = input("请输入您的用户名: ")
    inp_pwd = input("请输入您的密码: ")

    if inp_name == db_name and inp_pwd == db_pwd:
        print("用户登录成功")
        break
    else:
        print("用户账号或密码错误")

    print('其他。。。。。。。。。')

"""
while True:
while True:
while True:
break
break
break

tag = True
while tag:
while tag:
while tag:
tag = False
"""

3、死循环

while True:
    # print('Hello')
    # input(">>: ")
    1+1

4、while+continue: 终止本次循环

       强调1:不要在continue之后编写同级别的代码

count = 0
while count < 6: # 5 < 6
    if count == 3or count == 4:
        count += 1
        continue
        # count+=1 # 不要写在这里
    print(count)
    count += 1

       强调2:如果不想执行本次循环之后的代码,可以用continue,但是如果本次循环本来就没有要继续运行的后续代码了,就没必要加continue了

db_name = 'egon'
db_pwd = '123'
while True:
    inp_name = input('请输入您的用户名:')
    inp_pwd = input('请输入您的密码:')
    if inp_name == db_name and inp_pwd == db_pwd:
        print('用户登录成功')
        break
    else:
        print('用户账号或密码错误')
        # continue
    print('while子代码。。。。。。')  # 加了continue后这条代码在else里永远不会出现
    # 如果没有 print('while子代码') else同级代码本身后面没有代码 那么也就没必要加continue了

5、while + else

count = 0
while count < 6:
    print(count)
    if count == 3:
        break # 有break后直接终止 就不是正常死亡 就不会运行else
    count += 1

else:
    print('会在while循环正常死亡之后运行')
print('。。。。。。。。')

# else的应用场景
"""
把多个多个账号密码存起来

要求用户输入账号
要求用户输入密码

循环:
    从存放多个正确账号密码的地方取出一组账号和密码
    判断 输入账号 等于 取出的账号 并且输入的密码 等于 取出的密码
        告诉用户认证成功
        break
    # 否则:
    #     继续取账号密码判断(continue) # 因为continue后面没有其他代码 所以没必要这步骤
else:
    print('告诉用户输入的账号密码错误')
"""

6、while循环嵌套

db_name = "egon"
db_pwd = "123"

while True:
    inp_name = input("请输入您的用户名: ")
    inp_pwd = input("请输入您的密码: ")

    if inp_name == db_name and inp_pwd == db_pwd:
        print("用户登录成功")
        while True:
            print("""
            0 退出
            1 取款
            2 提现
            3 转账
            """)
            cmd=input("请输入您的命令编号:")
            if cmd == "0":
                break
            elif cmd == "1":
                print("正在取款")
            elif cmd == "2":
                print("正在提现")
            elif cmd == "3":
                print("正在转账")
            else:
                print("不知道的指令,请重新输入")
        break
    else:
        print("用户账号或密码错误")

# tag的方式结束循环
db_name = "egon"
db_pwd = "123"

tag = True
while tag:
    inp_name = input("请输入您的用户名: ")
    inp_pwd = input("请输入您的密码: ")

    if inp_name == db_name and inp_pwd == db_pwd:
        print("用户登录成功")

        while tag:
            print("""
            0 退出
            1 取款
            2 提现
            3 转账
            """)
            cmd=input("请输入您的命令编号:")
            if cmd == "0":
                tag = False
            elif cmd == "1":
                print("正在取款")
            elif cmd == "2":
                print("正在提现")
            elif cmd == "3":
                print("正在转账")
            else:
                print("不知道的指令,请重新输入")
    else:
        print("用户账号或密码错误")

三、流程控制之for循环

"""
1.for循环主要用于循环取值,例如列表、字典、字符串
2.for循环循环的次数取决于值得个数
while循环循环的次数取决条件什么时候变为False或者什么时候执行break

3.终止for循环只有break一种方案

"""

1、基本使用

l = [111, 222, 333, 444, 555]

i = 0
while i < len(l):
    print(l[i])
    i += 1

for x in l:
    print(x)

d = {'k1': 123, 'k2': 'sa', 'k3': [1, 2, 3]}

for k in d:
    print(k, d[k])


msg='hello word'
for x in msg:
    print(x)

l = [['aaa',111],['bbb',222],['ccc',333]]
for x in l:
    print(x)
for x,y in l:
    print(x,y)  # 用了解压赋值

2、for + break

for x in [111, 222, 333, 444, 555]:
    if x == 333:
        break
    print(x)
# 111
# 222

3、for + continue

for x in [111, 222, 333, 444, 555]:
    if x == 333:
        continue
    print(x)
# 111
# 222
# 444
# 555

4、for + else

for x in [111, 222, 333, 444, 555]:
    if x == 333:
        break
    print(x)
else:
    print(print(' =====>'))

5、for循环嵌套

for i in range(2):
    print('外层循环-->', i)
    for j in range(3):
        print('内层-->', j)
        # 外层循环--> 0
# 内层--> 0
# 内层--> 1
# 内层--> 2
# 外层循环--> 1
# 内层--> 0
# 内层--> 1
# 内层--> 2

注意:终止for循环只有break一种方案

6、for循环控制循环次数:range()

       in后直接放一个数据类型来控制循环次数有局限性:当循环次数过多时,数据类型包含值的格式需要伴随着增加
       range功能介绍

>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> 
>>> range(1,9) # 1...8
[1, 2, 3, 4, 5, 6, 7, 8]
>>> 
>>> range(1,9,1) # 1 2 3 4 5 6 7 8 
[1, 2, 3, 4, 5, 6, 7, 8]
>>> range(1,9,2) # 1 3 5 7 
[1, 3, 5, 7]

       1、for搭配range,可以按照索引取值,但是麻烦,所以不推荐

l=['aaa','bbb','ccc'] # len(l)=3
for i in range(len(l)):
    print(i,l[i])
# 0 aaa
# 1 bbb
# 2 ccc

for x in l:
    print(x)
# aaa
# bbb
# ccc

总结for循环与while循环的异同

       1、相同之处:
       都是循环,for循环可以干的事,while循环也可以干
       for+break: 同while+break循环一样
       for+else:同while+else循环一样
       2、不同之处:
       while循环称之为条件循环,循环次数取决于条件何时变为假
       for循环称之为"取值循环",循环次数取决in后包含的值的个数

posted @ 2020-07-09 16:42    阅读(122)  评论(0编辑  收藏  举报