Python while循环基础及其应用场景详解


当前版本:

  • Python 3.8.4

  • 简介

        while循环是一种在满足某个条件时重复执行代码块的结构。它会在每次执行代码块后检查条件是否为真,如果是则继续执行,直到条件不再满足为止。

        这种循环结构非常灵活,可以用于根据不同的条件重复执行特定的任务,例如遍历列表、处理数据,甚至是通过用户的输入来控制程序流程。

            

    目录

    1. while循环的语法

    1.1. 基本语法

    1.2. 跳出循环

    1.3. 单行写法

    2. while循环的应用

    2.1. 读取用户指令

    2.2. 读取文件每行内容

    2.3. 猜数字游戏


            

    1. while循环的语法

    1.1. 基本语法

    while 循环的语法非常简单:

    while 条件:
        循环体
  • 条件:这是一个布尔表达式,为真则执行,为假则不执行。
  • 循环体:就是条件为真需要执行的代码。
  •         

    那么什么为真?什么为假呢?

    python 中 True 表示真,False 表示假,我们可以直接对 while 判定真或假,比如:

    while True:    # 直接指定条件为真
        print("条件为真,执行代码...")

    结果(无限循环):

            

    如果指定为假,则不会执行循环体的代码

    while False:    # 直接指定条件为假
        print("条件为真,执行代码...")
    print("========= 结束 =========")

            

    当然,也支持取反

    while not False:    # 对假取反,为真
        print("条件为真,执行代码...")
    print("========= 结束 =========")

            

    注意:编写一个无限循环(条件永远为真),程序将永远在循环中执行,导致无法终止。所以,在使用 while 循环时,一定要确保有办法让条件在某些情况下为假,以避免进入无限循环的状态。例如:

    # 定义一个整数变量
    w = 1
    
    # 判断这个变量小于5
    while w < 5:
        print(f"当前变量为:{w}")
        w += 1    # 每循环1次,变量+1

            

    由于 while 循环属于条件判断,所以也支持 else

    # 定义一个变量
    w = 1
    
    while w < 3:    # 变量小于3执行这里的代码块
        print(f"当前w的值为:{w}")
        w += 1
    else:    # 变量不小于3执行这里的代码块
        print("w不再小于3")

            

    总结

    条件为 Ture 或 False,这也就意味着判断条件可以是:

  •  >、<、=、!=、>=、<=
  • and、or、not
  • in、not in
  • 综合使用:

    while a>1 and b<2 and c in (1,2,3):
        pass

            

    1.2. 跳出循环

    当程序满足某个条件或者达到了预期的目标时,可以跳出循环,避免继续执行不必要的循环迭代,可以提高代码的效率和性能。python 中给出了2种跳出循环的方法:

  • break:跳出整个循环
  • continue:跳出当前循环
  •         

    【案例一】跳出整个循环

    # 定义一个整数变量
    w = 0
    
    # 判断这个变量小于5才循环
    while w < 5:
        w += 1  #每次循环都+1
        if w == 3:
            # 如果w=3,那么跳出整个循环
            break
        print(f"当前变量为:{w}")

            

    【案例二】跳出当前循环

    # 定义一个整数变量
    w = 0
    
    # 判断这个变量小于5才循环
    while w < 5:
        w += 1  #每次循环都+1
        if w == 3:
            # 如果w=3,那么跳出此次循环
            continue
        print(f"当前变量为:{w}")

            

    1.3. 单行写法

    在Python中,while循环本身并不支持单行写法。如果需要使用单行的话可以利用分号来实现:

    x = 1
    while x < 5: print(x); x += 1

            

    2. while循环的应用

    2.1. 读取用户指令

    【案例一】是否删除某个文件

    # 定义一个用户输入的变量,用于判断
    user_input = ""
    
    # 如果这个变量不是y和n则循环询问
    while user_input != "y" and user_input != "n":
        # 给这个变量赋值用户输入的字符
        user_input = input("是否删除文件file.txt(y/n): ")
        
        # 变量为y:删除文件
        if user_input == "y":
            print("开始删除文件file.txt")
        # 变量为n:不删除文件
        elif user_input == "n":
            print("不删除文件file.txt")

            

    【案例二】输入透明密码

    # 导入用户输入安全密码的库
    import getpass
    
    root_pwd = "abc123"  # 设定root的真正密码
    user_pwd = ""        # 用户输入的密码
    
    # 如果密码不正确则无限循环
    while user_pwd != root_pwd:
        # 输入密码(输入时为透明)
        user_pwd = getpass.getpass("请输入root密码: ")
        if user_pwd == root_pwd:
            print(f"[INFO] 您输入的密码为:{user_pwd},正确!")
        else:
            print(f"[ERROR] 您输入的密码为:{user_pwd},错误!")

            

    2.2. 读取文件每行内容

    先通过 open 打开文件,再使用 while 逐行读取

    file_path = r"D:\file.txt"
    
    # 打开文件
    with open(file_path, "r") as file:
        # 将文件内容赋值给变量
        line = file.readline()
    
        # 逐行读取内容
        while line:
            print(f"当前行内容为:{line}")
            line = file.readline()

            

    2.3. 猜数字游戏

    import random
    
    # 生成一个随机数作为答案
    answer = random.randint(1, 10)
    
    # 初始化猜测次数
    guesses = 0
    
    # 游戏开始提示
    print("欢迎来到猜数字游戏!范围:1~10")
    
    # 游戏主循环
    while True:
        # 玩家输入猜测的数字
        guess = int(input("请猜一个数字: "))
        
        # 猜测次数增加
        guesses += 1
        
        # 检查猜测是否正确
        if guess == answer:
            print("恭喜你,猜对了!")
            break
        elif guess < answer:
            print("很遗憾,猜小了。")
        else:
            print("很遗憾,猜大了。")
    
    # 打印玩家猜测的次数
    print(f"恭喜玩家在第{guesses}次猜中数字,奖励一把枪")
    str = """
                               / __)
     ___     __     __  ___   ( (_   __ __     __
    (___()   / _\   / _\/ __)   ) _)\ \ \ / /__\\
            (__)/   \ \/ (     (__\ (__\ V /(__/
                    \_/\/
    """
    print(str)

    作者:一只勤劳的耗子

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python while循环基础及其应用场景详解

    发表回复