• python:模拟购票的小程序


    问题描述:小白学习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')
  • 相关阅读:
    Java中一对多映射关系(转)
    java映射一对一关系 (转)
    如何创建JUnit
    Java数组转置
    get与post方法(吴老师整理)
    后台获得数据
    JDK1.8的安装与卸载
    使用JSP输出九九乘法表
    foreach
    匿名内部类
  • 原文地址:https://www.cnblogs.com/houzhiheng/p/16273520.html
Copyright © 2020-2023  润新知