栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python学习笔记17:实操案例十四(模拟高铁售票系统,推算几天后的日期)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python学习笔记17:实操案例十四(模拟高铁售票系统,推算几天后的日期)

Python学习笔记17:实操案例十四(模拟高铁售票系统,推算几天后的日期)

1.模拟高铁售票系统
使用漂亮的表格模块PrettyTable
这个模块需要预先安装,不然直接导入会报错:

安装办法:
https://baijiahao.baidu.com/s?id=1727555443161391840&wfr=spider&for=pc
完成之后就不会报错了:


捕捉异常:

扩展:可以循环售票,可以打印车票等
这个前面都写过类似的功能,此处就偷个懒不写了

import prettytable as pt

#显示坐席

#显示坐席
def show_ticket(row_num):
    tb=pt.PrettyTable()
    tb.field_names=['行号','座位1','座位2','座位3','座位4','座位5']
    for i in range(row_num):
        lst=[f'第{i+1}行','有票','有票','有票','有票','有票']
        tb.add_row(lst)
    print(tb)

#订票
def order_ticket(row_num,row,column):
    tb=pt.PrettyTable()#买完要改成已出售,所以依旧要创建
    tb.field_names=['行号','座位1','座位2','座位3','座位4','座位5']
    for i in range(row_num):
        lst = [f'第{i + 1}行', '有票', '有票', '有票', '有票', '有票']  # 把这一行先全部初始化为有票
        if int(row)==i+1:
            lst[int(column)]='已售'#再根据列数把对应位置置为已售
        tb.add_row(lst)
    print(tb)#因为不是在原有表格上修改的而是新建了一个,所以要再打印输出一次


if __name__ == '__main__':
    row_num=13
    show_ticket(row_num)
    choose_num=input('请输入选择的座位号,如13,5表示13排5号座位')
    try:#可能出现异常的地方,有可能输错格式
        row,column=choose_num.split(',')#按照逗号分隔
    except:
        print('输入格式有误,如13排5号座位,应该输入13,5')
    order_ticket(row_num,row,column)

2.推算几天后的日期
出现一个小插曲,不小心把Pycharm的界面调成了这样,左边目录栏找不到了。

搜索之后从这里找到了:
https://blog.csdn.net/weixin_46713695/article/details/125029231

推算日期使用的模块叫datetime,不需要安装即可使用

前面这一截代码有点复杂,结合其他码友的帖子理解一下:
https://www.runoob.com/python/att-string-strip.html

https://blog.csdn.net/qq_34840129/article/details/86212522

比较深奥而且专业一点的解释:https://blog.csdn.net/xili2532/article/details/90237674

前面先input得到一个字符串,然后去掉可能被使用者输错的首尾空格,通过下标索引拆分成年-月-日的形式,然后转化为字符串格式化后返回出去:

https://www.jb51.net/article/168783.htm

然后再利用timedelta进行加减:

https://blog.csdn.net/xili2532/article/details/90237674


import datetime
def inputdate():
    indate=input('请输入开始日期:(例如:20200808)后按回车:')
    indate=indate.strip()#去掉首尾空格
    datestr=indate[0:4]+'-'+indate[4:6]+'-'+indate[6:]
    return datetime.datetime.strptime(datestr,'%Y-%m-%d')#字符串转化为日期

if __name__ == '__main__':
    print('---------------推算几天后的日期---------------')
    sdate=inputdate()#接受返回的字符串
    in_num=int(input('请输入间隔天数:'))
    fdate=sdate+datetime.timedelta(days=in_num)
    print('您推算的日期是:'+str(fdate))

也可以按照老师示范的这么改:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/965556.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号