15.Python流程控制之while循环

1.while循环

在这里插入图片描述

1.1while循环格式
while语句通过后面的条件选择是否执行子代码块。
条件为真:则执行代码块内的语句,执行完后会再次放回到while语句的开始处,
再次对条件进行判断,为真则继续执行子代码块之后又回到条件判断···,为假才会跳过子代码块往后执行。
* 死循环:while的条件永远为真,一直执行子代码块。设计程序的时候不要出现没有阻塞状态的死循环。
格式:
1.while 关键字
2.条件+
3.代码块
1.2实例
1.死循环
终端不停的输出···打开计算机的控制面板可以看到计算机CPU的使用率直接起飞↑。
Created with Raphaël 2.3.0 开始 while True print(1) 结束 yes no
while True:
    print(1)

在这里插入图片描述

2.指定次数循环
循环5次停止程序的运行。
Created with Raphaël 2.3.0 开始 x=0 判断x<5 x的值 x += 1 结束 yes no
x = 0
while x < 5:
    print(x)
    x += 1

"""
0
1
2
3
4
"""
3.指定输入结束循环
获取用户输入,输入'q'结束循环。
input 会阻塞程序的运行,要求输入,不然一直阻塞。
while input("请输入执行的代码(按下q退出):") != 'q':
    print('代码执行完毕!')
    
 """
请输入执行的代码(按下q退出):das
代码执行完毕!
请输入执行的代码(按下q退出):asd
代码执行完毕!
请输入执行的代码(按下q退出):q

Process finished with exit code 0
 """
4.模拟登入功能
*许多网站上登入账户都是给三次机会,三次机会过后被限制一段时间内不能登入。*
模拟账户登入,账户密码输入正确,打印登入成功,结束程序,
否则打印账户或密码错误,之后再次获取用户的输入,三次都出错退出程序。
Created with Raphaël 2.3.0 开始 num=0 num < 3 用户输入 账户&密码核对 登入成功 结束 num += 1 错误信息 yes no yes no
# 定义两个变量存储设置的账户与密码
username = 'kid'
password = '123'  # 注意是字符串

# 定义一个变成存储作为计数器
num = 0

# 循环获取用户输入,设置条件
while num < 3:
    input_username = input('输入用户名>>>>>:')
    input_password = input('输入用户密码>>>>:')
    # 判断用户名于密码
    if input_username == username and input_password == password:
        print('登入成功')
        # 跳出循环
        num = 3
    else:
        # 错误计数
        num += 1
        print('账户或密码错误,近期还可以尝试%s次' % (3-num))
1.3break语句
关键字break,用于while代码块内,当程序执行break时,立刻跳出本层循环。
Created with Raphaël 2.3.0 开始 num = 0 while True print(num) num += 1 num == 10 break 程序结束 结束框 yes yes no
# 打印数字 0-9
num = 0
while True:
    print(num)
    num += 1
    if num == 10:  # num == 10进入循环
        break  # 执行到这就跳出循环
print('程序结束')
1.4break实例
1.模拟登入功能
模拟账户登入,账户密码输入正确,打印登入成功,结束程序。
否则要求不再次输入,直到输入正确才停止。
使用break。
Created with Raphaël 2.3.0 开始 while True 获取账户密码 账户&密码正确 登入成功 break 结束 yes yes no
# 定义两个变量存储设置的账户与密码
username = 'kid'
password = '123'  # 注意是字符串

# 循环获取用户输入,设置条件
while True:
    input_username = input('输入用户名>>>>>:')
    input_password = input('输入用户密码>>>>:')
    # 判断用户名于密码
    if input_username == username and input_password == password:
        print('登入成功')
        # 跳出循环
        break
    print('请继续输入!!!')
2.嵌套实例
模拟账户登入,要求输入用户名,判断用户是否正确
不正确打印:用户不存在,要求继续输入用户名。
存在则要求输入密码,再判断密码是否正确,正确则打印:登入成功,退出程序,
否则打印密码错误,要求继续输入密码。
Created with Raphaël 2.3.0 开始 while True 获取账户名 账户名是否正确 获取账户密码 账户密码是否正确 break 登入成功 结束 密码不正确 用户不存在 yes yes no yes no
# 定义两个变量存储设置的账户与密码
username = 'kid'
password = '123'  # 注意是字符串

# 循环获取用户输入,设置条件
while True:
    input_username = input('输入用户名>>>>>:')
    if input_username == username:
        while True:
            input_password = input('输入用户密码>>>>:')
            if input_password == password:
                print('登入成功')
                break
            else:
                print('密码错误!')
        break
    else:
        print('用户不存在!')


3.标志位实例
* 不能使用break
模拟账户登入,y要求输入用户名,判断用户是否正确
不正确打印:用户不存在,要求继续输入用户名。
存在则要求输入密码,再判断密码是否正确,正确则打印:登入成功,退出程序,
否则打印密码错误,要求继续输入密码。
Created with Raphaël 2.3.0 开始 is_out = True is_out 获取用户名 用户是否存在 获取用户密码 密码是否正确 登入成功 is_out = False 结束 密码错误 用户不存在 yes no yes no yes no
# 定义两个变量存储设置的账户与密码
username = 'kid'
password = '123'  # 注意是字符串

# 定义标志位值
is_out = True

# 循环获取用户输入,设置条件
while is_out:
    input_username = input('输入用户名>>>>>:')
    if input_username == username:
        while is_out:
            input_password = input('输入用户密码>>>>:')
            if input_password == password:
                print('登入成功')
                # 修改标志位值
                is_out = False
            else:
                print('密码错误!')
    else:
        print('用户不存在!')
4.猜数字游戏
用户可以有三次猜错的机会,错了提示 猜大了 还是 猜小了,如果过程中猜对了直接退出。
三次机会使用完后询问是否继续玩,输入q退出游戏,否则继续。
Created with Raphaël 2.3.0 开始 num=0 | is_out = True is_out 获取输入 判断输入值 猜对了 break 结束 比实际值 大 猜大了 num += 1 剩下3-num次机会 num == 3 q退出,否则继续 判断是否为q is_out = False flowchat就是垃圾操 结束 num = 0 猜小了 yes no yes no yes no yes no yes no
# 定义一个变量存储需要猜的数字
age = 21

# 定义一个存储值的计数器,并初始化值
num = 0
is_out = True
# 设置循环的条件
while is_out:
    # 获取用户输入的值 int((input()) 将纯数字字符串转换为整型。不要输入非数字否则会报错。
    guess_age = int(input('输出你猜的数字:'))
    # 猜对了退出程序
    if guess_age == age:
        print('回到正确')
        break
    # 猜错了提示猜大了还说小了,记录错误的次数
    else:
        if guess_age > age:
            print('猜大了')
        else:
            print('猜小了')
        num += 1
        print('猜错了,你还有%s次机会' % (3-num))
        # 猜错三次后询问是否继续玩这个游戏
        if num == 3:
            if input('回复q退出否则继续') == 'q':
                is_out = False
                # 重置,记录错误的次数
            num = 0
1.5continue
关键字continue,用于while代码块内,当程序执行continue时,立刻结束本次循环。
# 打印数字 0-9 跳过4
x = 0
while x < 10:
    if x == 4:
        x += 1
        continue
    print(x)
    x += 1
很多情况下可以使用方法不执行某处循环。
x = 0
while x < 10:
    if x != 4:  
        print(x)
    x += 1
1.6while+else
当while循环正确执行执行完毕后接着执行else,如果,被break语句中断循环则不执行。
标准位退出循环,continue 结束某次循环不影响。
# 标准位退出循环
is_out = True
x = 0
while is_out:
    if x == 4:
        is_out = False
    print(x, end='')
    x += 1
else:
    print('x')

# continue 结束某次循环
x = 0
while x < 6:
    if x == 4:
        x += 1
        continue
    print(x, end='')
    x += 1
else:
    print('x')

# break中断循环
x = 0
while x < 6:
    if x == 4:
        x += 1
        break
    print(x, end='')
    x += 1
else:
    print('x')

 """
01234x
01235x
0123
 """

2.练习

1. 使用while循环输出1 2 3 4 5 6     8 9 10
2. 1-100的所有数的和
3. 输出 1-100 内的所有奇数
4. 输出 1-100 内的所有偶数
5. 1-2+3-4+5 ... 99的所有数的和
6. 用户登陆(三次机会重试)
7:猜年龄游戏
    要求:
    允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出

8:猜年龄游戏升级版(选做题)
要求:
    允许用户最多尝试3
    每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 
    就继续让其猜3次,以此往复,如果回答N或n,就退出程序
    如何猜对了,就直接退出
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值