当前位置 : 主页 > 编程语言 > python >

python实操案例__02—利用prettytable库模拟高铁售票系统

来源:互联网 收集:自由互联 发布时间:2023-02-04
1 问题描述 设计一个简易售票系统,可循环购票并显示余票。 2 功能拆解 2.1 什么是prettytable? PrettyTable 是python中的一个第三方库,可用来生成美观的ASCII格式的表格,本实操案例用此库

1 问题描述

设计一个简易售票系统,可循环购票并显示余票。

2 功能拆解

2.1 什么是prettytable?

PrettyTable 是python中的一个第三方库,可用来生成美观的ASCII格式的表格,本实操案例用此库完成。

基本使用

#创建表: tb = pt.PrettyTable() #按行/列添加数据: tb.add_row( <llist> ) tb.add_column( <llist> )

2.2 显示初始坐席

  • 创建列数及列名

    tb.field_names=['行号','座位1','座位2','座位3','座位4','座位5']

  • 根据输入行数创建并显示坐席

    for i in range(row_num): lst=[f'第{i+1}行','有票','有票','有票','有票','有票'] tb.add_row(lst)
  • 显示坐席

    print(tb)
  • 2.3 显示余票

    与显示初始坐席类似,不同点在于传入的参数为售后的lst,对lst遍历

    2.4 函数入口

    主函数运行

    2.4 订票

  • 订票函数需要输入行数和列数;
  • 函数对购买位置的参数设为已售;
  • 在一个死循环中,判断是否继续购票,输入N则break跳出循环。
  • 3 运行结果

    +--------+-------+-------+-------+-------+-------+ | 行号 | 座位1 | 座位2 | 座位3 | 座位4 | 座位5 | +--------+-------+-------+-------+-------+-------+ | 第1行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第2行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第3行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第4行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第5行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第6行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第7行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第8行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第9行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第10行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第11行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第12行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第13行 | 有票 | 有票 | 有票 | 有票 | 有票 | +--------+-------+-------+-------+-------+-------+ 请输入选择的座位,如13,5表示13排5号12,2 您已成功购买第12行2座 余票显示如下: +--------+-------+-------+-------+-------+-------+ | 行号 | 座位1 | 座位2 | 座位3 | 座位4 | 座位5 | +--------+-------+-------+-------+-------+-------+ | 第1行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第2行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第3行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第4行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第5行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第6行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第7行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第8行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第9行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第10行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第11行 | 有票 | 有票 | 有票 | 有票 | 有票 | | 第12行 | 有票 | 已售 | 有票 | 有票 | 有票 | | 第13行 | 有票 | 有票 | 有票 | 有票 | 有票 | +--------+-------+-------+-------+-------+-------+ 是否继续购票y/ny

    4 完整代码

    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): print(f'您已成功购买第{row}行{column}座') print('余票显示如下:') global lst2 lst2=[] for i in range(row_num): if int(row)==i+1: lst=[f'第{i+1}行','有票','有票','有票','有票','有票'] lst[int(column)]='已售' lst2.append(lst) else: lst = [f'第{i + 1}行', '有票', '有票', '有票', '有票', '有票'] lst2.append(lst) show(lst2) while True: anwser=input('是否继续购票y/n') if anwser=='y' or anwser=='Y': while 1: choose_num = input('请输入选择的座位,如13,5表示13排5号') try: row, column = choose_num.split(',') break except: print('输入格式有误,如13排5号,应该输入13,5') print(f'您已成功购买第{row}行{column}座') j=1 for item in lst2: if j <=13: if int(row) == j: item[int(column)] = '已售' else: pass j+=1 print('余票显示如下:') show(lst2) else: break print('感谢您的使用') #显示余票 def show(lst): tb=pt.PrettyTable() tb.field_names=['行号','座位1','座位2','座位3','座位4','座位5'] for item in lst2: tb.add_row(item) print(tb) #主函数运行 if __name__=='__main__': row_num=13 show_ticket(row_num) while 1: choose_num = input('请输入选择的座位,如13,5表示13排5号') try: row,column=choose_num.split(',') break except: print('输入格式有误,如13排5号,应该输入13,5') order_ticket(row_num,row,column)
    上一篇:Python怎样写个通用爬虫模板?
    下一篇:没有了
    网友评论