一,必做题
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个队及以上体育竞技,并输出排名