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)
相关文章
|
1天前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
31 21
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
1天前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
30 11
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
2天前
|
机器学习/深度学习 算法 TensorFlow
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现用户上传一张动物图片,识别其名称。
17 1
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
|
1天前
|
数据可视化 数据挖掘 API
使用Python进行数据可视化:探索Matplotlib和Seaborn库
【9月更文挑战第19天】在数据科学领域,将复杂的数据集转换成直观、易懂的图形是一项基本而关键的技能。本文旨在通过Python编程语言介绍两个强大的数据可视化库——Matplotlib和Seaborn,以及它们如何帮助数据分析师和研究人员揭示数据背后的故事。我们将从基础概念讲起,逐步深入到高级技巧,确保无论读者的背景如何,都能获得必要的知识和启发,以在自己的项目中实现有效的数据可视化。
|
1天前
|
机器学习/深度学习 JSON API
HTTP协议实战演练场:Python requests库助你成为网络数据抓取大师
在数据驱动的时代,网络数据抓取对于数据分析、机器学习等至关重要。HTTP协议作为互联网通信的基石,其重要性不言而喻。Python的`requests`库凭借简洁的API和强大的功能,成为网络数据抓取的利器。本文将通过实战演练展示如何使用`requests`库进行数据抓取,包括发送GET/POST请求、处理JSON响应及添加自定义请求头等。首先,请确保已安装`requests`库,可通过`pip install requests`进行安装。接下来,我们将逐一介绍如何利用`requests`库探索网络世界,助你成为数据抓取大师。在实践过程中,务必遵守相关法律法规和网站使用条款,做到技术与道德并重。
7 2
|
3天前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
18 3
|
23小时前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
24 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
2天前
|
机器学习/深度学习 存储 人工智能
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
使用Python作为开发语言,基于文本数据集(一个积极的xls文本格式和一个消极的xls文本格式文件),使用Word2vec对文本进行处理。通过支持向量机SVM算法训练情绪分类模型。实现对文本消极情感和文本积极情感的识别。并基于Django框架开发网页平台实现对用户的可视化操作和数据存储。
11 0
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
|
5天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从零基础到实战应用
【9月更文挑战第15天】本文将引导读者从零开始学习Python编程,通过简单易懂的语言和实例,帮助初学者掌握Python的基本语法和常用库,最终实现一个简单的实战项目。文章结构清晰,分为基础知识、进阶技巧和实战应用三个部分,逐步深入,让读者在学习过程中不断积累经验,提高编程能力。
|
1天前
|
数据可视化 Python
Python编程中的数据可视化技术
【9月更文挑战第19天】在数据驱动的时代,将复杂的数据集转化为直观易懂的视觉表达至关重要。本文将深入探索Python中的数据可视化库,如Matplotlib和Seaborn,并指导读者如何运用这些工具来揭示数据背后的模式和趋势。文章不仅会介绍基础图表的绘制方法,还将讨论高级技巧以提升图表的信息丰富度和吸引力。