在培训班上老师教一个很有意思的公交换乘

程序要求如下:

这是一个公交换乘题目, 目的是当用户输入起始站和终点站程序能够在公交车站库中搜索出一条换乘的线路。

例如公交车站的数据库如下

375:西直门,文慧桥,蓟门桥,学院路,知春路
562:蓟门桥,学院路,中关村
387:学院路,北京西站


例如当用户输入:

起点站:西直门

终点站:中关村

程序能 找到: 375---换乘 蓟门桥,学院路(562)----中关村


程序大概的思路如下:

1.将含有起始站的公交路线放进一个列表当中。

2.将含有终点站的公交路线放进一个列表当中。

3.找出起始站和终点站的两个列表中相同的站点就是我们需要换乘的车站。

4.输出起始站 中转站 终点站 (路线图就出来了!!)


代码:


#/usr/bin/env python

#coding=utf-8

a = raw_input('请输入起始站:')
b = raw_input('请输入终点站:')

file = open('luxian.txt','r+')
data = file.readlines() #读取文件当中储存的公交路线信息
file.close()

star = []
end  = []

for n in data:
    if n.find(a) > 0:
        star.append(n) #循环添加起始站列表
        #print star

    if n.find(b) > 0:
        end.append(n)#循环添加终点站列表
        #print end

for l1 in star:
    #print l1        
    l2 = l1.split(':')[1].split(',')#将起始站的每一个站用‘,’分隔成每一站与下面的终点站循环比较
    #print len(l2)
#l2 [375,"xizhimen,zhongguancun,zhichu"]
    for l4 in end:
        l5 = l4.split(':')[1].split(',')#同上
        #print len(l5)
        s = set(l2) & set(l5)
        #print s
        for s1 in s:
            print a + '到',s1,'到' + b

几十行代码   程序是一个公交车换乘系统 程序很简单  但是会很有用的   有什么问题欢迎打两个字交流一下  我在课堂上对两次for循环难理解   如果输出乱码的话有可能是编辑器的问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本程序为GIS和路径算法的测试程序,路径仅供参考。 算法描述:根据公交点构造出虚拟含换乘边在内的公交路网,共有约22万个路段,2.3万个点参与路径计算。根据不同的公交线路的速度赋不同的权值,对不同的换乘进行处理,求到最优的路径。换乘确定在400米之内+等车时间,求出最佳换乘。 新增功能 公交网路(含地铁城铁)交通最优路径计算。 为了使计算出的路径尽可能合理,程序换乘部分扩展的大量的路段,所以计算过程稍慢。 操作简单,用鼠标分别选中起始点和目的地点,系统自动计算最佳换乘路线。 由于公交数据变化很大,计算出的换乘路径仅供参考。 图层控制,用户可以通过图层选项,根据喜好,定制地图显示内容。 界面下部信息框显示相关公交路线,路径信息,和地址附近的公交点信息。 区域设施,按住鼠标左键在地图上画方框包含查询区域,显示区域内的各类地址名称。 包含大量的学校、机构、企事业等地址,共有1.7万多个个地址可供查询。支持模糊查询方式,在关键词栏中写入地址关键词,点击查询按钮,会在下面列表框中显示所有与该关键词相近的地址,鼠标双击相应的地址,该地址会在地图上显示出来,并在下面信息框中显示附近的公交公交线路。 程序说明 程序中所涉及的算法及核心技术全部采用北京工业大学通研究中心陈艳艳的算法和思路。 程序采用VC++语言在windows平台从底层开发,没有使用其他商用GIS组件或支持包。程序运行简洁、高效。 现有功能(整个北京地区): 支持多个图层:绿地、河流、道路、行政区、交通区、村乡地址、公交点等。 地图浏览:鼠标滚轮放大、缩小。按鼠标左键拖动地图移动。 支持地图中交通对象的信息交互查询。 通过输入关键词实现快速地址及公交线路查询,并在图上显示。 选择下拉框,选择公交线路查询 信息查询: 快速地址及公交查询,在信息框输入栏中输入地址关键词,即可查出与该关键词有关的所有地址,鼠标双击列表框中列出的地址,可以动态显示该地址在地图上的位置。关键词如输入“52”可得到所有包含52的公交点。 路段信息查询、修改,选取对应的菜单项,用鼠标点中某一路段,单击鼠标左键,弹出对话框,显示这个路段的信息包括路段名、长度、速度。 支持GPS定位,默认串口com1,每秒位数(bps):4800. 车辆行驶轨迹在地图上实时显示,轨迹存储、装载。 支持键盘方式:方向键上下左右移动地图,home,end放大缩小地图。 存在问题: 同样的起始点路径可能不同:由于同名的公交点可能在相近的不同地方,分别属于不同的公交线路。起始点的选择一般采用搜索到的第一个名称。这就造成同样的起始点而搜索的路径不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值