决赛叫号系统

该代码实现了一个决赛叫号系统,它能读取TXT文件中的参赛队伍信息,按类别分配到不同的决赛室,并提供菜单供用户选择查看各决赛室情况或进行叫号操作。系统支持显示各赛事类别和决赛室的现场情况,以及进行实时叫号功能。
摘要由CSDN通过智能技术生成
#  决赛叫号系统
def read_teams(file_path):  # 读取txt文件,每个参赛队伍的信息保存为一个字典对象,添加到列表teams中
    teams = []
    if os.path.exists(file_path):
        with open(file_path, 'r', encoding='utf-8') as f:
            i = 0
            for line in f:
                if i > 0:
                    data = line.strip().split('#')
                    team = {
                        'id': int(data[0].strip()),
                        'name': data[1].strip(),
                        'school': data[2].strip(),
                        'category': data[3].strip(),
                        'members': data[4].strip(),
                        'adviser': data[5].strip()
                    }
                    teams.append(team)
                i += 1
    return teams


def assign_rooms(teams):  # teams 中的参赛队伍按赛事类别分配,rooms存放每个赛事类别对应的队伍
    rooms = {}
    for team in teams:
        category = team['category']
        if category not in rooms:
            rooms[category] = {
                'current_index': 0,
                'queue': []  # 候场队列
            }
        rooms[category]['queue'].append(team)
    return rooms


def assign_rooms1(rooms):   # 列表存放分好类别的参赛队
    rooms1 = []
    for category in rooms:
        rooms1.append(rooms[category])
    return rooms1


def print_menu():  # 叫号系统菜单
    print('=================决赛叫号系统=================')
    print('1. 显示各赛事类别现场情况')
    print('2. 显示决赛室现场情况')
    print('3. 进行叫号')
    print('0. 退出程序')
    print('=============================================')


def call_numbers():
    file_path = 'teams_exists.txt'
    teams = read_teams(file_path)
    rooms = assign_rooms(teams)
    rooms1 = assign_rooms1(rooms)
    while True:
        print_menu()
        choice = input('请输入要执行的操作序号(0-3):')
        if choice == '1':  # 显示各决赛室情况
            for category in rooms:
                room = rooms[category]
                print(f'赛事类别:{category}')
                print(f'等待进场队伍:{[team["name"] for team in room["queue"]]}')
                print('--------------------------')
        elif choice == '2':
            print("请输入您想要查看的决赛室情况(1-9):")
            key = input()
            if key == '1':
                print(rooms1[0]['queue'], '\n', rooms1[9]['queue'], '\n', rooms1[18]['queue'], '\n', rooms1[27]['queue'])
            if key == '2':
                print(rooms1[1]['queue'], '\n', rooms1[10]['queue'], '\n', rooms1[19]['queue'], '\n', rooms1[28]['queue'])
            if key == '3':
                print(rooms1[2]['queue'], '\n', rooms1[11]['queue'], '\n', rooms1[20]['queue'], '\n', rooms1[29]['queue'])
            if key == '4':
                print(rooms1[3]['queue'], '\n', rooms1[12]['queue'], '\n', rooms1[21]['queue'], '\n', rooms1[30]['queue'])
            if key == '5':
                print(rooms1[4]['queue'], '\n', rooms1[13]['queue'], '\n', rooms1[22]['queue'])
            if key == '6':
                print(rooms1[5]['queue'], '\n', rooms1[14]['queue'], '\n', rooms1[23]['queue'])
            if key == '7':
                print(rooms1[6]['queue'], '\n', rooms1[15]['queue'], '\n', rooms1[24]['queue'])
            if key == '8':
                print(rooms1[7]['queue'], '\n', rooms1[16]['queue'], '\n', rooms1[25]['queue'])
            if key == '9':
                print(rooms1[8]['queue'], '\n', rooms1[17]['queue'], '\n', rooms1[26]['queue'])
        elif choice == '3':  # 叫号
            category = input('请输入要进行叫号的赛事类别:')
            if category not in rooms:
                print('输入错误,请重新输入!')
                continue
            room = rooms[category]
            count = 0
            while len(room['queue']):
                count += 1
                if count > len(room['queue']):
                    print('叫号完毕。')
                    break
                else:
                    room['current_index'] += 1
                    next_team = room['queue'][count - 1]
                    print(f"No{room['current_index']}. 请{next_team['name']}代表{next_team['school']}的参赛队伍进入赛场。")
                    time.sleep(random.uniform(0.5, 1))
        elif choice == '0':
            print('程序已退出。')
            break
        else:
            print('输入错误,请重新输入!')

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值