gpt4 book ai didi

Python 生成 max of mins key 时出错

转载 作者:行者123 更新时间:2023-12-01 04:37:16 25 4
gpt4 key购买 nike

我正在尝试编写一个使用字典的函数,其中每个键都分配给一个值列表。该函数执行一个游戏,其中取出每个键的最小值并进行比较,最小值中的最大值属于游戏的获胜者。如果所有玩家的最小值都相同,则比较他们的第二小值,并从中选出最大值来确定获胜的关键。该解决方案必须涉及字典/类/循环,但不涉及集合或递归。可以使用递归来打破循环。

例如:

define_winner({'A':[1,1], 'B':[2,2], 'C':[1,1]}) 生成 'B '(因为 B 的最低分数 2 大于其他玩家的最低分数 1

define_winner({'A':[1,2,3,4], 'B':[2,3,4,1], 'C':[1,3,4,5] }) 生成 'C'(所有玩家最初的最低分数均为 1,但 C 的下一个最低分数是 3,而 A 和 B 的下一个最低分数是 2)

define_winner({'A':[1,2,3,4], 'B':[2,3,4,1], 'C':[1,4,1,5] }) 产生 'Tied' (所有玩家最初都以最低分数 1 打平,但随后 A 和 B 打成 2 分,而 C 又得 1 分,因此不再考虑。然后A 和 B 再次打成 3,最后打成 4,因此打不平)

到目前为止我所写的内容产生了错误:

def determine_winner(results):
a = []
max_mins = 0
for key in results:
if min(results[key]) > max_mins:
winner = key
max_mins = min(results[key])
if min(results[key]) == max_mins:
results = results[key].remove(min(results[key]))
return winner

最佳答案

看起来您在循环时正在修改结果:

results = results[key].remove(min(results[key]))

删除最后一个 if 语句将修复该错误。

对于实际程序,此版本首先对结果进行排序,然后为每个得分者循环遍历:

def determine_winner(results):
print results
for key in results:
results[key].sort() # sort all the results
length = len(results[key])

for l in range(length): # examine the scores in order
max_score = 0
next_results = {}
for key in results: # compare each scorer
score = results[key][l]
if score < max_score: # ignore this scorer
continue
if score == max_score: # multiple high scores
winner = 'Tied'
else: # new high score
winner = key
max_score = score
# prepare the results for the next round
next_results[key] = results[key]
results = next_results # get ready for the next round
print winner

determine_winner({'A':[1,1], 'B':[2,2], 'C':[1,1]})
determine_winner({'A':[1,2,3,4], 'B':[2,3,4,1], 'C':[1,3,4,5]})
determine_winner({'A':[1,2,3,4], 'B':[2,3,4,1], 'C':[1,4,1,5]})

输出如下所示:

{'A': [1, 1], 'C': [1, 1], 'B': [2, 2]}
B
{'A': [1, 2, 3, 4], 'C': [1, 3, 4, 5], 'B': [2, 3, 4, 1]}
C
{'A': [1, 2, 3, 4], 'C': [1, 4, 1, 5], 'B': [2, 3, 4, 1]}
Tied

关于Python 生成 max of mins key 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31508316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com