可以用 Python 编程语言做哪些神奇好玩的事情
大一刚学Python的时候,写了一只12306爬虫,采集车次、时刻表数据
多线程采集,经过不断调试终于稳定,速度也还可以
每天大概可以采集到2000多个车站,5000多个车次,5万多条时刻信息(这些信息每天都在变的,所以要设置不同日期,然后保存)
当然这不算有意思的
有意思的是这个
可以可视化显示各个站点不同时间的车辆运行情况(当然显示部分不是用Python写的了)可以可视化显示各个站点不同时间的车辆运行情况(当然显示部分不是用Python写的了)
采集了这么多数据不利用就太可惜了,于是动了点脑筋,把数据利用起来,就有了下面这些(下面就与Python无关了)
那个时候铁道部还没有发布官网的购票APP,于是有了这个
自己做了个订票的APP,可查询车次、时刻、余票、正晚点
(请忽略图上的水印,这个APP首发是在百度火车吧,懒得再重新截图了)
嗯,虽然当时没有官方的APP,但第三方的还不少,上面的功能也没什么新鲜的
不过下面几个功能一般的APP是没有的
车站详细信息查询,包括所在地址、是否办理旅客乘降、是否办理行包业务,也有一些非路内人士不会在意的信息,比如所属线路、所在路局、是否为接算站等等
编组、乘务、套跑信息
上面两个功能非路内人士应该不会用的太多,下面还有几个实用的功能
在高峰时期订票电话经常打不通,其实这个是有些小技巧的,加拨同路局其它城市区号效果会好很多(当时电话订票是要拨打出发地所在路局的电话的,不知道现在是否实现了电话跨路局售票)
座位分布,想刷靠窗座位就看这个吧
根据二维码验票真伪
将来的你一定会感谢今天拼命努力的你(二维码自动识别)
放票时间查询
界面丑的要死,请大家忽略界面吧。。
本回答由提问者推荐
python有趣的编程代码
classPoint:
row=0
col=0
def__init__(self,row,col):
self.row=row
self.col=col
defcopy(self):
returnPoint(row=self.row,col=self.col)
#初始框架
importpygame
importrandom
pygame.init()
W=800
H=600
ROW=30
COL=40
size=(W,H)
window=pygame.display.set_mode(size)
pygame.display.set_caption(贪吃蛇)
bg_color=(255,255,255)
snake_color=(200,200,200)
head=Point(row=int(ROW/2),col=int(COL/2))
head_color=(0,128,128)
snakes=[
Point(row=head.row,col=head.col+1),
Point(row=head.row,col=head.col+2),
Point(row=head.row,col=head.col+3)
#生成食物
defgen_food():
while1:
pos=Point(row=random.randint(0,ROW-1),col=random.randint(0,COL-1))
is_coll=False
#是否跟蛇碰上了
ifhead.row==pos.rowandhead.col==pos.col:
is_coll=True
forsnakeinsnakes:
ifsnake.row==pos.rowandsnake.col==pos.col:
is_coll=True
break
ifnotis_coll:
break
returnpos
#定义坐标
food=gen_food()
food_color=(255,255,0)
direct=left#left,right,up,down
defrect(point,color):
cell_width=W/COL
cell_height=H/ROW
left=point.col*cell_width
top=point.row*cell_height
pygame.draw.rect(
window,color,
(left,top,cell_width,cell_height)
#游戏循环
quit=True
clock=pygame.time.Clock()
whilequit:
#处理事件
foreventinpygame.event.get():
ifevent.type==pygame.QUIT:
quit=False
elifevent.type==pygame.KEYDOWN:
ifevent.key==273orevent.key==119:
ifdirect==leftordirect==right:
direct=up
elifevent.key==274orevent.key==115:
ifdirect==leftordirect==right:
direct=down
elifevent.key==276orevent.key==97:
ifdirect==upordirect==down:
direct=left
elifevent.key==275orevent.key==100:
ifdirect==upordirect==down:
direct=right
eat=(head.row==food.rowandhead.col==food.col)
#重新产生食物
ifeat:
food=gen_food()
#处理身子
#1.把原来的头,插入到snakes的头上
snakes.insert(0,head.copy())
#2.把snakes的最后一个删掉
ifnoteat:
snakes.pop()
ifdirect==left:
head.col-=1
elifdirect==right:
head.col+=1
elifdirect==up:
head.row-=1
elifdirect==down:
head.row+=1
dead=False
#1.撞墙
ifhead.col<0orhead.row<0orhead.col>=COLorhead.row>=ROW:
dead=True
#2.撞自己
forsnakeinsnakes:
ifhead.col==snake.colandhead.row==snake.row:
dead=True
break
ifdead:
print(死了)
quit=False
#渲染——画出来
pygame.draw.rect(window,bg_color,(0,0,W,H))
forsnakeinsnakes:
rect(snake,snake_color)
rect(head,head_color)
rect(food,food_color)
pygame.display.flip()
#设置帧频(速度)
clock.tick(8)
#收尾工作
这是一个简易版贪吃蛇的代码,虽然结构简单,但是该有的功能都是完整的,可玩性也不错