Python循环嵌套实战 - 智能地铁调度模拟系统

部署运行你感兴趣的模型镜像

1. 实战概述

  • 本项目通过 while(时间推进)与 for(车厢/站点遍历)嵌套,模拟地铁列车在多站间往返运行,动态处理乘客上下车、高峰期客流、车厢容量限制等逻辑,实现调度过程可视化与数据统计,强化循环结构实战应用。

2. 实战步骤

2.1 系统设计

  • 本系统采用事件驱动与时间步进相结合的模拟架构。外层 while 循环以“到站”为单位推进时间,每站停靠固定秒数;内层多个 for 循环分别处理乘客下车、上车及车厢调度。列车状态用列表表示各车厢载客量,站点用数组记录等车人数与上下车统计。通过方向变量实现往返运行,高峰期机制动态调整客流生成。系统实时追踪总运送量、错失乘客、载客率及站点繁忙度,兼顾逻辑清晰性与教学目的,突出 while + for 嵌套在复杂流程控制中的实战价值。

2.2 系统实现

  • 创建智能地铁调度模拟系统.py文件
    在这里插入图片描述

    """
    功能:智能地铁调度模拟系统
         —— while + for 嵌套实战
    作者:华卫
    日期:2025年11月11日
    """
    
    import random
    import time
    
    # ----------------- 可调参数 -----------------
    STATIONS      = 5          # 站点 0~4
    CARS          = 4          # 车厢节数
    CAPACITY      = 20         # 每节车厢上限
    TOTAL_TIME    = 60         # 总模拟时长(秒)
    STOP_SECONDS  = 5          # 每站停靠时间(秒)
    RUSH_START    = 20         # 高峰期开始(秒)
    RUSH_END      = 40         # 高峰期结束(秒)
    # -------------------------------------------
    
    def subway_simulation():
        # 列车状态:列表中每个元素表示一节车厢的乘客数
        train = [0] * CARS
    
        # 各站点等车人数
        waiting = [0] * STATIONS
    
        current_station = 0          # 列车当前位置
        direction = 1                # 1 表示正向 0→4,-1 表示反向 4→0
        elapsed = 0                  # 已流逝时间(秒)
        total_transported = 0        # 成功上车总人数
        missed_passengers = 0        # 因满载被挤掉人数
    
        # 记录每站上下车数据,方便最后统计
        station_board = [0] * STATIONS
        station_alight = [0] * STATIONS
    
        print("🚇 地铁调度模拟开始!\n")
    
        # ============ 外层 while:时间推进 ============
        while elapsed < TOTAL_TIME:
            # ---------------- 到达站点 ----------------
            print(f"🚉 到达站点 {current_station}  (运行时间 {elapsed:>4} s)")
            print(f"📊 当前列车状态: {train}")
    
            # 1. 乘客下车:简单假设每节车厢有 20%~40% 的人下车
            for car_idx in range(CARS):
                if train[car_idx] == 0:
                    continue
                alight_ratio = random.uniform(0.2, 0.4)
                alight_num = int(train[car_idx] * alight_ratio)
                alight_num = max(0, min(alight_num, train[car_idx]))
                train[car_idx] -= alight_num
                station_alight[current_station] += alight_num
    
            # 2. 乘客上车
            # 2.1 根据是否高峰期生成新到乘客
            if RUSH_START <= elapsed <= RUSH_END:
                new_arrival = random.randint(5, 15)
            else:
                new_arrival = random.randint(0, 10)
            waiting[current_station] += new_arrival
    
            # 2.2 用 for 循环把等车乘客按“先少后多”原则塞进车厢
            want_to_board = waiting[current_station]
            boarded = 0
    
            for _ in range(want_to_board):
                # 找剩余空间最多的车厢
                best_car = 0
                max_space = -1
                for car_idx in range(CARS):
                    space = CAPACITY - train[car_idx]
                    if space > max_space:
                        max_space = space
                        best_car = car_idx
                if max_space <= 0:
                    # 全列满载,挤掉剩余乘客
                    missed = want_to_board - boarded
                    missed_passengers += missed
                    break
                # 上车一人
                train[best_car] += 1
                boarded += 1
    
            waiting[current_station] -= boarded
            station_board[current_station] += boarded
            total_transported += boarded
    
            print(f"👥 本次上车: {boarded} 人  剩余等车: {waiting[current_station]} 人")
            print("-" * 50)
    
            # 3. 模拟停靠耗时
            time.sleep(0.1)          # 肉眼可见地“跑”,可删掉
            elapsed += STOP_SECONDS
    
            # 4. 列车移动(到终点站就折返)
            next_station = current_station + direction
            if next_station >= STATIONS or next_station < 0:
                direction *= -1
                next_station = current_station + direction
            current_station = next_station
    
        # ================== 模拟结束 ==================
        print("\n🏁 模拟结束!")
        print(f"📈 总运送乘客: {total_transported} 人")
        print(f"😔 被挤掉乘客: {missed_passengers} 人")
    
        # 计算平均载客率
        total_seats = CARS * CAPACITY
        avg_rate = sum(train) / total_seats * 100
        print(f"📊 结束时刻列车载客: {train}  瞬时载客率: {avg_rate:5.1f}%")
    
        # 最繁忙站点(按上车人数)
        busiest = max(range(STATIONS), key=lambda s: station_board[s])
        print(f"🔥 最繁忙站点: 站点 {busiest} (共上车 {station_board[busiest]} 人)")
    
        # 各站详细数据
        print("\n----- 各站详细 -----")
        for s in range(STATIONS):
            print(f"站点 {s}:  上车 {station_board[s]:>3}  |  下车 {station_alight[s]:>3}")
    
    # ---------------------- 主程序入口 ----------------------
    if __name__ == "__main__":
        # 启动地铁调度模拟函数
        subway_simulation()
    
  • 代码说明:本代码实现了一个基于时间步进的智能地铁调度模拟系统。通过外层 while 循环控制总运行时间,每次循环代表列车到达一个站点;内层多个 for 循环分别处理乘客下车、新乘客生成及上车逻辑。系统动态维护列车各车厢载客量和各站等车人数,高峰期(RUSH_START 至 RUSH_END)会增加客流。上车策略优先填入空余最多的车厢,满载后拒绝后续乘客。程序实时输出运行状态,并在结束时统计总运送量、错失乘客、瞬时载客率及各站上下车数据,突出 while + for 嵌套在流程控制与资源调度中的综合应用。

2.3 系统测试

  • 运行程序,查看结果
    在这里插入图片描述

3. 实战总结

  • 本次实战通过构建“智能地铁调度模拟系统”,深入运用了 whilefor 的嵌套结构,实现了时间推进、站点循环、车厢遍历与乘客调度等多层逻辑控制。系统不仅模拟了列车往返运行、高峰期客流变化、车厢容量限制等真实场景,还完成了上下车统计、载客率分析和繁忙站点识别等数据处理功能。整个项目结构清晰、参数可调、输出直观,既强化了对循环语句的综合应用能力,也体现了编程在解决实际调度问题中的建模思维,具有良好的教学示范价值和扩展潜力。

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

内容概要:本文详细介绍了一个基于C++的养老院管理系统的设计与实现,旨在应对人口老龄化带来的管理挑战。系统通过整合住户档案、健康监测、护理计划、任务调度等核心功能,构建了从数据采集、清洗、AI风险预测到服务调度与可视化的完整技术架构。采用C++高性能服务端结合消息队列、规则引擎和机器学习模型,实现了健康状态实时监控、智能任务分配、异常告警推送等功能,并解决了多源数据整合、权限安全、老旧硬件兼容等实际问题。系统支持模块化扩展与流程自定义,提升了养老服务效率、医护协同水平和住户安全保障,同时为运营决策提供数据支持。文中还提供了关键模块的代码示例,如健康指数算法、任务调度器和日志记录组件。; 适合人群:具备C++编程基础,从事软件开发或系统设计工作1-3年的研发人员,尤其是关注智慧养老、医疗信息系统开发的技术人员。; 使用场景及目标:①学习如何在真实项目中应用C++构建高性能、可扩展的管理系统;②掌握多源数据整合、实时健康监控、任务调度与权限控制等复杂业务的技术实现方案;③了解AI模型在养老场景中的落地方式及系统架构设计思路。; 阅读建议:此资源不仅包含系统架构与模型描述,还附有核心代码片段,建议结合整体设计逻辑深入理解各模块之间的协同机制,并可通过重构或扩展代码来加深对系统工程实践的掌握。
内容概要:本文详细介绍了一个基于C++的城市交通流量数据可视化分析系统的设计与实现。系统涵盖数据采集与预处理、存储与管理、分析建模、可视化展示、系统集成扩展以及数据安全与隐私保护六大核心模块。通过多源异构数据融合、高效存储检索、实时处理分析、高交互性可视化界面及模块化架构设计,实现了对城市交通流量的实时监控、历史趋势分析与智能决策支持。文中还提供了关键模块的C++代码示例,如数据采集、清洗、CSV读写、流量统计、异常检测及基于SFML的柱状图绘制,增强了系统的可实现性与实用性。; 适合人群:具备C++编程基础,熟悉数据结构与算法,有一定项目开发经验的高校学生、研究人员及从事智能交通系统开发的工程师;适合对大数据处理、可视化技术和智慧城市应用感兴趣的技术人员。; 使用场景及目标:①应用于城市交通管理部门,实现交通流量实时监测与拥堵预警;②为市民出行提供路径优化建议;③支持交通政策制定与信号灯配时优化;④作为智慧城市建设中的智能交通子系统,实现与其他城市系统的数据协同。; 阅读建议:建议结合文中代码示例搭建开发环境进行实践,重点关注多线程数据采集、异常检测算法与可视化实现细节;可进一步扩展机器学习模型用于流量预测,并集成真实交通数据源进行系统验证。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酒城译痴无心剑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值