2019 08 01 流程控制循环

流程控制之while循环

这里很多人有都会有个疑问,什么是循环?

循环就是一个重复的过程,就像工厂里面的流水线的工人,重复做个同一件事,那么就这事循环。而计算机的循环就是重复干一个活,可以举一个实例,就像我们QQ登录帐号或密码输入错误,你可以再一次输入,这就是一个循环!

语法

'''
while(当) <条件>:
    <需要进行重复的代码块>  # 当条件成立时会进行运行,结束完代码块后会再一次判断条件,成立再运行,运行完再判断条件,%
'''

#运用while循环做一个猜年龄游戏
age = 16
while True:
    inp_age = input('age:')
    inp_age = int(inp_age)
    
    if inp_age > age:
        print('猜大了')
    elif inp_age < age:
        print("猜小了")
    else:
        print("猜对了")
#这是一个死循环,因为无论你输入什么都无法退出。除非你触发bug

while + break

这里会有人有疑问,break是什么? 从break本意来看,就是打破,所以不难理解break有什么用!

语法

'''
while(当) <条件>:
    <需要进行重复的代码块>  # 当条件成立时会进行运行,结束完代码块后会再一次判断条件,成立再运行,运行完再判断条件,%
    break  # 遇到break后终止while循环
'''
age = 16


#这里来对猜年龄游戏做一个修改,当猜对了就退出
while True:
    print(1)  # 1
    inp_age = input('age:')  # '16'
    inp_age = int(inp_age)  # 16

    if inp_age > age:  #
        print('猜大了')
    elif inp_age < age:  #
        print('猜小了')
    else:
        print('猜对了')
        break  # 不运行下面的代码,并且跳出循环

print('hello')
#当触发break之后会执行循环外的代码,可以说while是一行代码,之后的是其他代码。

while + continue

这里会有人有疑问,continue是什么? 从break本意来看,就是继续,所以不难理解continue有什么用!

语法

'''
while(当) <条件>:
    <需要进行重复的代码块>  # 当条件成立时会进行运行,结束完代码块后会再一次判断条件,成立再运行,运行完再判断条件,%
    continue  # 遇到continue后直接开始下一次while循环
'''

#这里让我们来输出1-10 并且跳过5,这里可能会有人想跳过5,怎么跳呢?当你学会使用continue,你就会发现十分简单

count = 0
while True:
    count += 1
    if count == 5:  #
        continue # 继续,跳出本次循环,不运行下面的代码,直接开始下一次循环
    if count == 11:
        break
    print(count)

while + else

count = 0

while count < 10:
    count += 1

    if count == 1111111111111:
        break  # break除了干掉while循环,还会干掉else

    print(count)
else:
    print("当while循环没有被break的时候我会触发,但尽量不要使用我")

while循环的嵌套

就是之前的 if 一样,while循环也有他的嵌套。

ATM密码输入成功还需要进行一系列的命令操作,比如取款,比如转账。并且在执行功能结束后会退出命令操作的功能,即在功能出执行输入q会退出输出功能的while循环并且退出ATM程序。

# 退出内层循环的while循环嵌套
while True:
    user_db = 'nick'
    pwd_db = '123'

    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(f'{cmd} 功能执行')
    else:
        print('username or password error')

print('退出了while循环')
# 退出双层循环的while循环嵌套
while True:
    user_db = 'nick'
    pwd_db = '123'

    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(f'{cmd} 功能执行')
        break
    else:
        print('username or password error')

print('退出了while循环')
username: nick
password: 123
login successful
请输入你需要的命令:q
退出了while循环

流程控制之for循环

循环:重复干一件事,for循环可以是所以容器数据类型

语法

'''
while:
    1. 会进入死循环(不可控),尽量少使用while循环
    2. 世间万物都可以作为循环的对象
for:
    1. 不会进入死循环(可控),以后尽量使用for循环
    2. 只对容器类数据类型+字符串循环(可迭代对象)
'''

lis = ['gebilaowang', 'dapao', 'yongjiushuaige','dsb']
for i in lis:  # i='gebilaowang'  # i='dapao'
    print(i)  # i='gebilaowang'  # i='dapao'
    print(1)
for i in 'nick':
    print(i)
    
# 这里补充一个内置函数range,不做过多的说明
print(list(range(3)))  # 0,1,2
print(list(range(10)))  # 0,1,2..9
print(list(range(2,5)))  # 2,3,4  # 顾头不顾尾
print(list(range(3,6)))  # 3,4,5  # 顾头不顾尾
print(list(range(3,7,3)))  # 3,6  # 顾头不顾尾
print(list(range(1,10,2)))  # 1,3,5,7,9  # 顾头不顾尾

for + break

前面while已经介绍过break,for的break也是一样的

for i in range(1,11): # 1,2,3,4,5
    print(i)
    if i == 5:
        break  #跳出循环

for + continue

前面while已经介绍过continue 也就不做过多的说明了

for i in range(1,11): # 1,2,3,4,6,7,8,9,10
    if i == 5:
        continue  #跳出本次循环

    print(i)

for + else

前面while已经介绍过else,也就不做过多的说明了

for i in range(1,11): # 1,2,3,4,6,7,8,9,10
    if i == 5:
        break  #跳出本次循环

    print(i)
else:  # 没有被break会触发
    print('hello,你居然运行到了else')

补充

这里在补充一个for循环实现loading......

#这里用了一个内置函数time,来控制执行的间隔时间
import time

print('Loading',end='')

for i in range(6):
    print('.',end='')  # ...
    time.sleep(0.5)

猜你喜欢

转载自www.cnblogs.com/TMesh-python/p/11284714.html