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')