第七周作业:模拟比赛,尾号6

发布时间 2023-11-19 23:45:41作者: lin_1

一,必做题

1.打印程序的介绍性信息式(要求包括你们学号后两位信息)


#  定义一个函数,打印基本的赛制信息
def print_information():
    print("学号为2022310143136的同学为这一场比赛的裁判员")
    print("接下来请选择两队指派选手进行比赛,比赛采用五局三胜制")
    print("前面四局采用25分制,每队至少获得25分,并同时超过对方2分时,才胜利一局")
    print('决胜局采用15分制,一队先获得8分后,交换场地,按原来位置的顺序继续比赛,交换'
          '场地不改变发球顺序之类的')
    print('最后一局比赛,先获得15分并领先对方2分为胜利者')

2.输入I(input):两个球员(球队)的能力值,模拟比赛的次数

#   定义一个函数,输入两名球员的能力值,模拟一场比赛(前面四局)的进行,并最返回结果
def one_game(player1, player2, i):
    source1 = 0
    source2 = 0
    list1 = []
    while not gameover(source1, source2):
        temp = random.random()
        if player1 > temp:
            source1 += 1
        else:
            source2 += 1
    list1.append(source1)
    list1.append(source2)
    if source1 > source2:
        print("第{}局比赛的胜利者为:第一位玩家".format(i))
        print('比分为{}:{}'.format(list1[0], list1[1]))
    else:
        print("第{}局比赛的胜利者为:第二位玩家".format(i))
        print('比分为{}:{}'.format(list1[0], list1[1]))
    return list1


#  定义一个一场比赛(前面四场比赛)结束的函数
def gameover(source1, source2):
    if source1 >= 25 or source2 >= 25:
        if source1 > source2 and source1 - source2 >= 2:
            return True
        elif source2 > source1 and source2 - source1 >= 2:
            return True
        else:
            return False


#  定义一个函数,模拟最后一场比赛的情况,输入的参数是两位选手的能力值
def one_game_result(player1, player2):
    source1 = 0
    source2 = 0
    list1 = []
    count = 0
    while not result_game_over(source1, source2):

        temp = random.random()
        if player2 > temp:
            source2 += 1
        else:
            source1 += 1
        if (source1 == 8 or source2 == 8) and count == 0:
            count = 1
            print('有一队的队员的分数达到8分了,现在交换场地')
    list1.append(source1)
    list1.append(source2)
    if source1 > source2:
        print("最后一局比赛的胜利者为:第一位玩家")
        print('比分为{}:{}'.format(list1[0], list1[1]))
    else:
        print("最后一局比赛的胜利者为:第二位玩家")
        print('比分为{}:{}'.format(list1[0], list1[1]))
    return list1

3,定义一个函数,判断最后一场比赛的结果

#  定义一个函数,判断最后一场比赛的结果
def result_game_over(source1, source2):
    if source1 >= 15 or source2 >= 15:
        if source1 > source2 and source1 - source2 >= 2:
            return True
        elif source2 > source1 and source2 - source1 >= 2:
            return True
        else:
            return False

4.输出O(output):两个球员(球队)获胜的概率(输出谁做的结果截图)

#  定义一个函数,模拟正式的比赛,并最终决出胜利者
def game_main():
    #  打印基本的信息
    print_information()
    #  下面输入俩位选手的能力值
    player1 = eval(input("请输入选手A的能力值:"))
    player2 = eval(input('请输入选手B的能力值:'))
    #  定义两个变量来记录两位选手的比分
    source_A = 0
    source_B = 0
    #  五局三胜制,最多进行五场比赛
    for i in range(5):
        #  表示还没有进入到最后一局,就是普通的对局
        if i != 4:
            list1 = one_game(player1, player2, i + 1)
            if list1[0] > list1[1]:
                source_A += 1
            else:
                source_B += 1
            if source_A > source_B and source_A == 3:
                print('还没有进入决赛局,A选手就3:1打败了对手A,比赛结束')
                break
            elif source_B > source_A and source_B == 3:
                print('还没有进入决赛局,B选手就3:1打败了对手A,比赛结束')
                break
        #  会进入决胜局就是,前面两个人的比分为2:2
        else:
            list1 = one_game_result(player1, player2)
            if list1[0] > list1[1]:
                source_A += 1
            else:
                source_B += 1
            if source_A > source_B:
                print("选手A在这场比赛取得胜利,比分为3:2")
            else:
                print("选手B在这场比赛取得胜利,比分为3:2")

5,调用函数,输出结果

game_main()

5. 运用pyinstaller打包可以执行的文件。

(1)安装pyinstaller(在所需要打包的python文件的绝对路径下安装Pyinstaller,cmd切换盘符)

(2)输入打包命令(Pyinstaller -F -w PE.py)

(3)展示最后的打包结果

所想要的exe文件就在dist文件夹里面

二,面对象程序设计:采用乒乓球、羽毛球、篮球、足球等规则中的一种。同时采用循环赛或者晋级赛形式,模拟分析4个队及以上体育竞技,并输出排名