while`循环

简介: `Python`的`while`循环在条件为真时重复执行代码块。常见用法包括:固定次数循环、无限循环(可由外部条件退出)、使用`break`和`continue`控制流程,以及等待条件满足。经典应用案例有模拟登录尝试、读取文件至末尾和实现简单聊天机器人。`while`循环适用于处理不确定次数迭代和条件触发场景。

Python中的while循环是一种基本的循环结构,它会在条件为真时反复执行代码块。while循环的语法如下:

while condition:
    # 执行代码块

这里的condition是一个布尔表达式,如果其值为True,则执行缩进的代码块。每次执行完代码块后,会重新评估条件表达式,如果仍然为True,则继续执行循环体。当条件表达式为False时,循环停止。

常见的用法

  1. 执行固定次数的循环

    count = 5
    while count > 0:
        print("Count:", count)
        count -= 1
    
  2. 无限循环

    while True:
        # 执行代码块,直到外部条件(如用户输入)触发退出
        user_input = input("Enter 'exit' to quit: ")
        if user_input == 'exit':
            break
    
  3. 使用breakcontinue语句

    numbers = [1, 2, 3, 4, 5, 6]
    while True:
        current = numbers.pop(0)
        if current == 3:
            continue  # 跳过当前迭代,继续下一次迭代
        if current > 5:
            break  # 条件不满足时退出循环
        print(current)
    
  4. 等待条件满足

    import time
    from threading import Event
    
    stop_event = Event()
    
    def stop_thread():
        stop_event.set()
    
    thread = threading.Thread(target=stop_thread)
    thread.start()
    
    while not stop_event.is_set():
        print("Thread is running...")
        time.sleep(1)
    
    print("Thread has stopped.")
    

经典的应用案例

  1. 模拟用户登录尝试
    用户有限定次数尝试登录,超过次数则锁定账户。

    MAX_ATTEMPTS = 3
    attempts = 0
    
    while attempts < MAX_ATTEMPTS:
        username = input("Enter username: ")
        password = input("Enter password: ")
        if valid_login(username, password):
            print("Login successful!")
            break
        else:
            attempts += 1
            print(f"Invalid credentials. Attempts left: {MAX_ATTEMPTS - attempts}")
    
        if attempts == MAX_ATTEMPTS:
            print("Account locked!")
            break
    
  2. 读取文件直到文件末尾
    打开一个文件,并逐行读取内容,直到文件结束。

    filename = 'example.txt'
    with open(filename, 'r') as file:
        while True:
            line = file.readline()
            if not line:
                break
            print(line, end='')  # 打印每一行内容
    
  3. 实现简单的聊天机器人
    允许用户与机器人对话,直到用户选择退出。

    print("Welcome to the chatbot! Type 'exit' to quit.")
    
    while True:
        message = input("You: ")
        if message.lower() == 'exit':
            print("Chatbot: Goodbye!")
            break
        response = chatbot_response(message)
        print(f"Chatbot: {response}")
    

while循环是处理不确定次数的迭代和等待特定条件发生时的理想选择。通过结合breakcontinue语句,可以灵活地控制循环的执行流程。

目录
相关文章
|
Web App开发 应用服务中间件 Apache
|
存储 监控 固态存储
Hyper-V启动慢卡顿,专业解决
针对Hyper-V启动慢卡顿问题,可采取以下优化措施:1. 硬件资源检查与优化,如内存和CPU的合理分配;2. 虚拟机设置调整,包括虚拟硬盘管理和启用动态内存;3. 网络设置优化,确保虚拟交换机配置正确;4. 系统服务管理,禁用不必要的服务;5. 安装最新系统更新并检查兼容性;6. 启用快速启动和清理系统垃圾文件。综合应用这些方法,能有效提升Hyper-V的启动速度和性能。
|
自然语言处理 监控 程序员
本地部署企业级自适应 RAG 应用的方法与实践
本文介绍了本地部署企业级自适应RAG(Adaptive Retrieval-Augmented Generation)应用的方法与实践。RAG结合信息检索与文本生成,广泛应用于问答、编程等领域。自适应RAG通过分类器评估查询复杂度,动态选择无检索、单步检索或多步检索策略,优化生成结果。其特点在于灵活性和适应性,能够根据输入情况调整检索和生成策略。核心技术包括检索策略的自适应、生成策略的自适应以及模型参数的自适应调整。通过实战,深入了解了RAG的工作原理和应用场景,并获得了宝贵经验。
1879 4
|
存储 人工智能 算法
【深度优先搜索篇】走迷宫的魔法:算法如何破解迷宫的神秘密码
【深度优先搜索篇】走迷宫的魔法:算法如何破解迷宫的神秘密码
|
程序员 Python
Py之easygui:easygui的简介、安装(最正确安装)、使用方法之详细攻略
Py之easygui:easygui的简介、安装(最正确安装)、使用方法之详细攻略
Py之easygui:easygui的简介、安装(最正确安装)、使用方法之详细攻略
|
存储 搜索推荐 算法
【数据结构入门精讲 | 第九篇】考研408排序算法专项练习(一)
【数据结构入门精讲 | 第九篇】考研408排序算法专项练习(一)
1688 1
|
机器学习/深度学习 计算机视觉
【YOLOv8改进】 ParameterNet:DynamicConv(Dynamic Convolution):2024最新动态卷积
**摘要** ParameterNet是新提出的框架,旨在让低FLOPs模型也能受益于大规模视觉预训练,通过动态卷积在增加参数量的同时控制计算量。动态卷积利用条件生成的卷积核增强模型适应性。在ImageNet上,ParameterNet-600M在准确性上超过Swin Transformer,且FLOPs更低。该方法也被拓展至语言领域,提升LLaMA模型性能。代码可在&lt;https://parameternet.github.io/&gt;获取。
|
存储 算法
最短路径算法( Dijkstra + Bellman-Ford + SPFA + Floyd)
最短路径算法( Dijkstra + Bellman-Ford + SPFA + Floyd)
2724 0
|
算法
数据结构之文件系统模拟(树数据结构)
本文介绍了文件系统模拟及其核心概念,包括树状数据结构、节点结构、文件系统类和相关操作。通过构建虚拟环境,模拟文件的创建、删除、移动、搜索等操作,展示了文件系统的基本功能和性能。代码示例演示了这些操作的具体实现,包括文件和目录的创建、移动和删除。文章还讨论了该算法的优势和局限性,如灵活性高但节点移除效率低等问题。
341 0

热门文章

最新文章