ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python:模拟购票的小程序

2022-05-15 16:31:06  阅读:177  来源: 互联网

标签:13 python 购票 OKRED num print tb 模拟 row


问题描述:小白学习python的第N天,继续练习。做一个模拟购票的小程序,没有用数据库和文件来存储数据,只是能够单词选择。

 

# hzh 每天进步一点点
# 2022/5/13 17:24
import colorama
import time
import os
import prettytable as pt

colorama.init(autoreset=True)
class rcolors:
    OKRED = '\033[1;31m'
    END = '\033[0m'

class Bcolors:
    OKRED = '\033[1;32m'
    END = '\033[0m'

def xunhuan():
    dict_ticker = {'K1177': ['北京南-台北东', '18:05', '18:39', '00:34'],
                   'T8917': ['武汉南-天津西', '18:15', '18:49', '00:34'],
                   'G6023': ['拉萨南-重庆西', '18:20', '19:19', '00:59'],
                   'G203': ['纽约西-旧金山', '18:35', '19:09', '00:34'],
                   }
    print(rcolors.OKRED + '车次\t出发站-到达站\t\t出发时间\t到达时间\t历时时长' + rcolors.OKRED)
    for item in dict_ticker:
        print(Bcolors.OKRED + item, end='\t')
        for i in dict_ticker[item]:
            print(Bcolors.OKRED + i, end='\t\t')
        print()
    train_no = input('请输入要购买的车次:')
    persons = input('请输入乘车人:')
    flag = True
    for j in dict_ticker:  #输出字典的key,作为输入高铁班次做对比
            if train_no == j:
                flag = True
                s = f'您已购买了{train_no}次列车,'
                s_info = dict_ticker[train_no]
                s += s_info[0] + '' + s_info[1] + '开,'  # 获取列表中的对应索引的值
                print('正在查询余票.')
                row_num = 13
                show_ticket(row_num)
                chose_num = input('请选择您的座位号,如13,5表示13排5座位(13,5):')
                try:
                    row, column = chose_num.split(',')
                    order_ticket(row_num, row, column)
                    time.sleep(2)
                    print('正在出票中,请稍等...')
                    time.sleep(3)
                    print(Bcolors.OKRED + f'座位号:{row}排{column}列,{s}请{persons}尽快取走纸质车票,祝您旅途平安。【铁路客服】' + Bcolors.END)
                    break
                except:
                    print('输入格式有异常,如13,5表示13排5座位13,5,请重新购买车次')
                    xunhuan()
            else:
                flag = False
                # print('没有查询到该车次信息,请重新输入:')

    if not flag:
        print(rcolors.OKRED+'未查询到该车次信息,或者输入有误,请重新输入'+rcolors.END)
        xunhuan()
def shuru():
    print(rcolors.OKRED+'-----欢迎进入北京市列车购票系统-----'+rcolors.END)
    print('请使用账号(admin) 密码(123456)来登录购票系统')
    user = input('请输入用户名:')
    passwd = input('请输入密码:')
    if user=='admin' and passwd == '123456':
        xunhuan()
    else:
        print('您输入的用户名或者密码不正确,请重新输入')
        shuru()


#显示坐席
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):
        if int(row) == i+1:
            lst = [f'第{i + 1}排', '有票', '有票', '有票', '有票', '有票']
            lst[int(column)] = '已售'
            tb.add_row(lst)
        else:
            lst = [f'第{i + 1}排', '有票', '有票', '有票', '有票', '有票']
            tb.add_row(lst)
    print(tb)

if __name__ == '__main__':
    shuru()
    os.system('pause')

 

标签:13,python,购票,OKRED,num,print,tb,模拟,row
来源: https://www.cnblogs.com/houzhiheng/p/16273520.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有