当前位置:首页>python>python程序设计

python程序设计

  • 2026-09-08 09:41:46
python程序设计
     关键词:计算思维,顶层设计
     最近在阅读《python语言程序设计》的第八章,提到了计算思维的概念,该书通过列举体育竞技的程序模拟来阐释计算思维,以及顶层设计的编程方法论。本篇文章是记录我学习第八章产生的其他想法与观点。
     计算思维是抽象实际问题的计算特征,利用计算机求解。计算思维的本质是抽象和自动化。
     基于现实生活的观察,为什么高速在节假日时比平时更容易堵车呢?
堵车是由那些因数引起的呢?
    如同下面代码,是模拟高速堵车的顶层设计:它描述的是“介绍 - 输入 - 处理 - 输出” 的完整流程,但核心的拥堵计算逻辑未实现。
def main():      printIntro()      n,k,v=getInput()      process()      printOutput()def printIntro():      print("这是一个高速堵车模拟器")      RL=20000    #模拟高速总长20km  RN=4        #模拟高速4车道  VM=100      #模拟车子最高限速100km/h  VMI=60      #模拟车子最低限速60km/h  print("高速总长{0:},高速车道数{1:}".format(RL,RN))      print("高速限速为{}km/h~{}km/h".format(VM,VMI))      passdef getInput():      a=eval(input("请输入阻力值(0-1):"))      n=eval(input("请输入一个小时内进入高速的车的数量:"))      return n,adef process(n,a):      t=0      #阈值q为单位时间内高速尾端的车流量,q越大代表车辆越密集,道路越拥堵。      return t,qdef printOutput(t,q):      print("在第{}时开始拥堵,且此时的车流量为{}".format(t,q))      pass
    现在通过把顶层设计发送给AI。AI不但理解了我的目的是通过python编程,模拟高速堵车,还帮助我完善了核心的拥堵计算逻辑。
AI生成的代码如下:
def main():      printIntro()    # 修正:接收getInput返回的两个值(阻力值、车辆数)      resistance, car_num = getInput()    # 调用处理函数并接收返回值      block_time, flow = process(resistance, car_num)    # 打印结果      printOutput(block_time, flow)
def getInput():    # 增加异常处理,避免用户输入非数字导致报错      while True:            try:                  resistance = eval(input("请输入阻力值(0-1):"))            if 0 <= resistance <= 1:                           break                     else:                           print("阻力值需在0-1之间,请重新输入!")            except:                  print("请输入有效的数字!")        while True:              try:                    car_num = eval(input("请输入一个小时内进入高速的车的数量:"))                      if car_num >= 0:                            break                      else:                            print("车辆数量不能为负数,请重新输入!")              except:                    print("请输入有效的数字!")     return resistance, car_num
def process(resistance,car_num):  #核心拥堵计算逻辑:  #param resistance: 阻力值(0-1),0=无阻力,1=完全堵塞:  #param car_num: 1小时内进入高速的车辆总数  #return: 拥堵开始时间t(小时)、拥堵时的尾端流量q(辆/小时)  # 1. 基础交通参数(基于真实交通工程标准)  single_lane_capacity = 2000  # 单车道每小时通行能力(辆/小时)  speed_correction = 0.9  # 速度修正系数(因实际车速低于限速)  lane_num = 4  # 车道数(与printIntro中的RN一致)  # 2. 计算道路实际通行能力(受阻力影响)# 基础通行能力 = 车道数 × 单车道通行能力 × 速度修正  base_capacity = lane_num * single_lane_capacity * speed_correction  # 实际通行能力 = 基础通行能力 × (1 - 阻力系数)(阻力越大,通行能力越低)  actual_capacity = base_capacity * (1 - resistance)  # 3. 计算单位时间实际车流量(辆/小时)  hourly_flow = car_num  # 因为输入的是1小时内的车辆数,所以小时流量就是car_num  # 4. 拥堵判定与计算  t = 0  # 拥堵开始时间(小时),默认0=不拥堵  q = 0  # 拥堵时的尾端流量(辆/小时)  if hourly_flow > actual_capacity:        # 4.1 计算拥堵开始时间:超出通行能力的比例越大,拥堵开始越早        # 超出比例 = (实际流量 - 通行能力) / 通行能力        exceed_ratio = (hourly_flow - actual_capacity) / actual_capacity        # 拥堵开始时间:超出比例越高,时间越早(最小0.1小时,最大1小时)        t = round(1 / (1 + exceed_ratio), 2)  # 保证t在0.1~1之间        # 4.2 计算拥堵时的尾端流量:拥堵时尾端流量≈通行能力(道路扛不住更多车)        # 阻力越大,尾端流量折损越多        q = round(actual_capacity * (1 - 0.2 * resistance), 2)    else:        # 不拥堵时,尾端流量=实际小时流量        q = round(hourly_flow, 2)    return t, q
def printOutput(t, q):    if t > 0:        print(f"\n拥堵判定结果:")        print(f"在第{t}小时开始拥堵,此时高速尾端的车流量为{q}辆/小时")    else:        print(f"\n拥堵判定结果:")        print(f"未发生拥堵,当前高速尾端的车流量为{q}辆/小时")
# 执行主函数if __name__ == "__main__":    main()
    AI的辅助编程确实把编程的门槛降低了,我在没有想好该用什么公式才能建立堵车的数学模型时,AI就能包办了。在学习python中,AI的加入对编程的学习有怎么样的影响呢?如同堵车模拟器,不需要知道具体的理论(交通流理论),就能实现代码的生成。

最新文章

随机文章