游戏竞技场有8个角色,角色ID为1~8的正整数,每个角色带有战力数值,数值区间在1~100的正整数。 现随机打乱后两两配对进行淘汰赛,按照对阵图顺序执行,比较战力大小,大的那方进入下一轮,战力相同ID小的胜,直到决出冠亚季军。
首先生成带战力数值的角色列表:
# 生成带有战力数值的角色列表
def generate_characters():
characters = []
for i in range(1, 9):
# 随机生成战力值
strength = random.randint(1, 100)
characters.append((i, strength))
return characters
然后比较战力值,决出胜者:
# 比较两个角色的战力值
def compare_strength(char1, char2):
if char1[1] > char2[1]:
return char1
elif char1[1] < char2[1]:
return char2
else:
# 如果战力相同,ID小的胜
return char1 if char1[0] < char2[0] else char2
生成单轮淘汰赛:
# 进行单轮淘汰赛,并打印比赛结果
def single_round(characters, round_number):
# 随机配对
pairs = random.sample(characters, len(characters))
match_round = ["八进四", "四进二", "季军赛", "冠军赛"]
print(match_round[round_number])
matches = []
for i in range(0, len(pairs), 2):
match = compare_strength(pairs[i], pairs[i+1])
print(f"比赛{(i+2)//2}: 角色{pairs[i][0]} 对战 角色{pairs[i+1][0]}, 角色{match[0]}获胜")
matches.append(match)
return matches
全部程序:
import random
# 生成带有战力数值的角色列表
def generate_characters():
characters = []
for i in range(1, 9):
# 随机生成战力值
strength = random.randint(1, 100)
characters.append((i, strength))
return characters
# 比较两个角色的战力值
def compare_strength(char1, char2):
if char1[1] > char2[1]:
return char1
elif char1[1] < char2[1]:
return char2
else:
# 如果战力相同,ID小的胜
return char1 if char1[0] < char2[0] else char2
# 进行单轮淘汰赛,并打印比赛结果
def single_round(characters, round_number):
# 随机配对
pairs = random.sample(characters, len(characters))
match_round = ["八进四", "四进二", "季军赛", "冠军赛"]
print(match_round[round_number])
matches = []
for i in range(0, len(pairs), 2):
match = compare_strength(pairs[i], pairs[i+1])
print(f"比赛{(i+2)//2}: 角色{pairs[i][0]} 对战 角色{pairs[i+1][0]}, 角色{match[0]}获胜")
matches.append(match)
return matches
# 主程序
if __name__ == '__main__':
# 生成角色列表
characters = generate_characters()
print("初始角色:")
for char in characters:
print(f"角色 ID {char[0]} 战力 {char[1]}")
# 八进四淘汰赛
round1_winners = single_round(characters, 0)
# 四进二淘汰赛
round2_winners = single_round(round1_winners, 1)
# 转换成集合,使用集合的差操作,来获取季军赛的参加者
round3 = list(set(round1_winners) - set(round2_winners))
# 季军赛
round3_winners = single_round(round3, 2)
# 冠军赛
final_winners = single_round(round2_winners, 3)
# 确定冠军、亚军、季军
champion = final_winners[0]
runner_up = list(set(round2_winners) - set(final_winners))[0]
third_place = round3_winners[0]
print(f"冠军: 角色 {champion[0]} 战斗力 {champion[1]}")
if runner_up:
print(f"亚军: 角色 {runner_up[0]} 战斗力 {runner_up[1]}")
if third_place:
print(f"季军: 角色 {third_place[0]} 战斗力 {third_place[1]}")
运行结果: