Python练习(二):售票系统

# -*- coding: utf-8 -*-
'''
售票系统

场景:
假设某次演出共有100张观演券待售,观演券编号分别是00到99,假设总共有5个售票点同时售票,售票点的编号是1-5,用5个线程模拟这5个售票点的售票情况。
1、正确创建观演券的编号
2、输出每个售票点和其所卖出的观演券的票号。输出内容包含类似“x号售票点卖出编号为xx的观演券”
3、各售票点不能售出相同票号的观演券
4、卖完之后在主线程通知已售罄。输出内容类似“观演券全部售卖完毕”
Version:1.0
Author:LZ_CUMT
'''

import time, threading, random


# 售票点线程
def run_thread(index):
    global ticket_range
    ticket_index = random.randint(1, len(ticket_range))    # 随机数模拟出售卖票号在票号序列中的位置
    ticket_num = ticket_range.pop(ticket_index-1)               # 根据位置从票号序列中删除这一票号
    # 打印售卖信息
    if ticket_num < 10:
        print("%d号售票点卖出编号为0%d的观演券" % (index, ticket_num))
    else:
        print("%d号售票点卖出编号为%d的观演券" % (index, ticket_num))
    time.sleep(0.2)

if __name__ == '__main__':
    # 创建票号序列列表00-99
    ticket_range = []
    for i in range(100):
        ticket_range.append(i)

    # 按顾客总数进行循环
    for i in range(0, 100):
        sell_index = random.randint(1, 5)     # 随机数模拟出顾客选择的售票点
        # 运行该售票点的线程
        t = threading.Thread(target=run_thread, args=(sell_index,))
        t.start()
        t.join()

    print('观演券全部售卖完毕')    # 主线程结束,打印信息

版权声明:本文为sinat_39238867原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。