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语句,可以灵活地控制循环的执行流程。

目录
相关文章
|
9月前
|
存储 监控 固态存储
Hyper-V启动慢卡顿,专业解决
针对Hyper-V启动慢卡顿问题,可采取以下优化措施:1. 硬件资源检查与优化,如内存和CPU的合理分配;2. 虚拟机设置调整,包括虚拟硬盘管理和启用动态内存;3. 网络设置优化,确保虚拟交换机配置正确;4. 系统服务管理,禁用不必要的服务;5. 安装最新系统更新并检查兼容性;6. 启用快速启动和清理系统垃圾文件。综合应用这些方法,能有效提升Hyper-V的启动速度和性能。
|
数据可视化 前端开发 数据挖掘
【优秀python大屏】基于python flask的广州历史天气数据应用与可视化大屏
本文介绍了一个基于Python Flask框架的广州历史天气数据应用与可视化大屏系统,该系统通过数据采集、处理、分析和可视化技术,提供了丰富的气象数据展示和决策支持,帮助用户快速了解和应对气象变化。
584 110
【优秀python大屏】基于python flask的广州历史天气数据应用与可视化大屏
|
10月前
|
SQL 存储 算法
sql server加密算法加盐
通过在 SQL Server 中结合使用加盐和哈希,可以有效地增强密码的安全性。本文详细介绍了在 SQL Server 中如何实现密码加盐和哈希的步骤,以及相关的完整示例和注意事项。希望本文能帮助读者更好地理解和应用加密技术,提升数据库系统的安
350 7
|
11月前
|
自然语言处理 监控 程序员
本地部署企业级自适应 RAG 应用的方法与实践
本文介绍了本地部署企业级自适应RAG(Adaptive Retrieval-Augmented Generation)应用的方法与实践。RAG结合信息检索与文本生成,广泛应用于问答、编程等领域。自适应RAG通过分类器评估查询复杂度,动态选择无检索、单步检索或多步检索策略,优化生成结果。其特点在于灵活性和适应性,能够根据输入情况调整检索和生成策略。核心技术包括检索策略的自适应、生成策略的自适应以及模型参数的自适应调整。通过实战,深入了解了RAG的工作原理和应用场景,并获得了宝贵经验。
1644 4
|
算法 网络架构
计算机网络: 点对点协议 PPP
计算机网络: 点对点协议 PPP
342 0
|
机器学习/深度学习 数据可视化 PyTorch
OneFlow深度学习框架介绍:新手快速上手指南
【4月更文挑战第12天】OneFlow是一款高性能的深度学习框架,由一流科技公司研发,以其数据流编程模型、动态图执行和高效分布式训练等功能脱颖而出。其易用性、卓越性能和强大的分布式训练能力使其在AI领域备受关注。新手可以通过简单的安装和基础程序快速上手,利用OneFlow的Module构建模型,结合损失函数和优化器进行训练。此外,OneFlow支持ONNX模型导入导出、TensorBoard可视化及与其他Python库集成,助力无缝对接现有生态。深入了解和实践OneFlow,可提升深度学习开发效率。
522 2
|
测试技术
测试人员6大基本职责
测试人员6大基本职责
231 1
|
SQL 分布式计算 Apache
Apache Doris + Apache Hudi 快速搭建指南|Lakehouse 使用手册(一)
本文将在 Docker 环境下,为读者介绍如何快速搭建 Apache Doris + Apache Hudi 的测试及演示环境,并对各功能操作进行演示,帮助读者快速入门。
506 0
Apache Doris + Apache Hudi 快速搭建指南|Lakehouse 使用手册(一)
|
人工智能 API UED
🔍语言无界,沟通无阻:AI翻译技术,让职场国际交流零障碍!
【8月更文挑战第1天】全球化驱动跨国合作,但语言障碍影响交流效率。AI翻译技术突破此限制,实现实时多语种翻译,如会议中即时将发言转为所需语言,确保无障碍沟通。此外,AI能根据上下文精准翻译,避免误解。通过持续学习,AI翻译质量不断提升。这项技术打破语言壁垒,促进文化融合,未来将进一步优化职场国际交流,推动全球化进程。
388 0
|
机器学习/深度学习 计算机视觉
【YOLOv8改进】 ParameterNet:DynamicConv(Dynamic Convolution):2024最新动态卷积
**摘要** ParameterNet是新提出的框架,旨在让低FLOPs模型也能受益于大规模视觉预训练,通过动态卷积在增加参数量的同时控制计算量。动态卷积利用条件生成的卷积核增强模型适应性。在ImageNet上,ParameterNet-600M在准确性上超过Swin Transformer,且FLOPs更低。该方法也被拓展至语言领域,提升LLaMA模型性能。代码可在&lt;https://parameternet.github.io/&gt;获取。