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))
也可以按照老师示范的这么改: