• Python(7)循环语句


    while 循环

    语法:
        while 条件表达式:
            代码块
    
    • 1
    • 2
    • 3
    • 执行流程
      1. while 语句在执行时,会先对 while 后的条件表达式进行判断
      2. 如果为True那么执行代码块
      3. 如果为False则终止循环

    条件表达式恒为 True 的循环语句,我们称为 死循环,它会一直运行。

    例如:

    while True:
        print("死循环")
    
    • 1
    • 2

    循环三要素(表达式)

    1. 初始化表达式,通过初始化一个变量来实现
      • i = 0
    2. 使用我们初始化的变量当作条件表达式
      • while i < 10:
    3. 更新变量
      • i += 1
    i = 0
    while i < 10:
        i += 1
    
    • 1
    • 2
    • 3

    练习1

    求 100 以内所有奇数的和

    count = 0
    
    number = 0
    
    while count < 100:
        count += 1
        if count % 2 == 1:
            number += count
    
    print(number)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    练习2

    求 100 以内所有 7 的倍数的和

    count = 0
    
    number = 0
    
    while count < 100:
        count += 1
        if count % 7 == 0:
            number += count
    
    print(number)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    练习3

    水仙花数,水仙花数是指一个 n 位数 (n >=3),它的每个位上的数字的n次幂之
    和等于它本身(例如:13 + 53 + 3**3 = 153)。

    求 1000 以内的所有 水仙花数

    # 方法一
    count = 0
    while count < 1000:
        count += 1
        if count >= 100:
            # 取出数字的位数 n
            n = len(str(count))
            # 取出数的所有位上的数字
            b = count // 100
            s = count % 100 // 10
            g = count % 10
            # 进行条件判断
            if b ** n + s ** n + g ** n == count:
                print(count)
    
    # 方法二
    count = 0
    while count < 1000:
        count += 1
        if count >= 100:
            count_str = str(count)
            # 取出数字的位数 n
            n = len(count_str)
            # 取出数的所有位上的数字
            b = int(count_str[0])
            s = int(count_str[1])
            g = int(count_str[2])
            # 进行条件判断
            if b ** n + s ** n + g ** n == count:
                print(count)
    
    • 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

    break、continue和pass

    • break 可以用来立即退出循环语句(包括else)

    • continue 可以跳过当次循环

    • pass 用来在判断或循环语句中占位的

    • 用户登录场景模拟

      • 接收用户输入的 usernaem和password
      • 判断是否正确
      • 给三次机会
      • 最终给出欢迎词或错误提示
    # 基本功能的实现
    login_sign = True
    
    count = 0
    while count < 3:
        count += 1
    
        username = input("username:")
        password = input("password:")
    
        if username == "admin" and password == "admin":
            print("登录成功")
            login_sign = True
            break
        else:
            print("密码错误")
            print(f"这是你的第{count}次机会,你还有{3 - count}次机会")
            login_sign = False
    
    if login_sign:
        print("欢迎你的使用")
    else:
        print("不好意思,你的机会用光了,请联系管理员修改密码")
        
    """
    增加功能
    1. 判断是用户名出错还是密码出错
    2. 当是用户名出错时,不减少机会
    """
    login_sign = True
    
    count = 0
    while count < 3:
        count += 1
    
        username = input("username:")
    
        if username == "admin":
            password = input("password:")
            if password == "admin":
                print("登录成功")
                login_sign = True
                break
            else:
                print("密码错误")
                print(f"这是你的第{count}次机会,你还有{3 - count}次机会")
                login_sign = False
        else:
            print("用户名输入错误")
            print(f"这是你的第{count}次机会,因为是用户名错误所以机会不减少,你还有{(3 - count) + 1}次机会")
            count -= 1
    
    if login_sign:
        print("欢迎你的使用")
    else:
        print("不好意思,你的机会用光了,请联系管理员修改密码")
    
    • 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
  • 相关阅读:
    SkiaSharp 之 WPF 自绘 弹动小球(案例版)
    算法学习-优先队列(堆)
    AOP事务管理
    QT国际化
    Spring DI(依赖注入)的实现方式:属性注入和构造注入
    飞腾全国产化加固计算机
    搭建nacos集群,并通过nginx实现负载均衡
    【Dart】dart之mixin探究
    【仿牛客网笔记】 Redis,一站式高性能存储方案——点赞
    C++获取计算机硬件信息(Linux)
  • 原文地址:https://blog.csdn.net/gtd54789/article/details/127607207