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))

也可以按照老师示范的这么改:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/bailichen800/article/details/125229461