# -*- 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('观演券全部售卖完毕') # 主线程结束,打印信息
Python练习(二):售票系统
最新推荐文章于 2024-11-21 15:50:59 发布