python实操案例__02—利用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 显示初始坐席

  1. 创建列数及列名

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

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

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

    print(tb)

2.3 显示余票

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

2.4 函数入口

主函数运行

2.4 订票

  1. 订票函数需要输入行数和列数;
  2. 函数对购买位置的参数设为已售;
  3. 在一个死循环中,判断是否继续购票,输入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)
相关文章
|
9月前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
9月前
|
存储 分布式计算 大数据
基于Python大数据的的电商用户行为分析系统
本系统基于Django、Scrapy与Hadoop技术,构建电商用户行为分析平台。通过爬取与处理海量用户数据,实现行为追踪、偏好分析与个性化推荐,助力企业提升营销精准度与用户体验,推动电商智能化发展。
|
9月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的台风灾害分析及预测系统
针对台风灾害预警滞后、精度不足等问题,本研究基于Python与大数据技术,构建多源数据融合的台风预测系统。利用机器学习提升路径与强度预测准确率,结合Django框架实现动态可视化与实时预警,为防灾决策提供科学支持,显著提高应急响应效率,具有重要社会经济价值。
|
9月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
关系型数据库 MySQL Python
Python编程:prettytable打印出类似MySQL的效果
Python编程:prettytable打印出类似MySQL的效果
259 0
|
10月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
1657 102
|
10月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
505 104

推荐镜像

更多