B站杨淑娟老师实操案例十四代码优化,改进为可循环购票并显示购票结果。
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)
|