gpt4 book ai didi

python - 代码 Python 3 的问题

转载 作者:太空宇宙 更新时间:2023-11-04 05:46:05 24 4
gpt4 key购买 nike

我是 python 的新手,我还在学习,我在尝试将它放入我的数组中时遇到了问题:

  • 每项赛事的获胜者
  • 平均分最高的房子
  • 获胜次数最多的房子

使用这段代码:

获取事件名称:

Flag = True
while Flag:
try:
e = str(input("Enter Event names [Type XXX to stop]: "))
if e == 'XXX' or e == 'xxx':
Flag = False
else:
event.append(e)
except ValueError:
print("Please enter a word, Thanks")
print()

获取房屋名称:

Flag = True
while Flag:
try:
h = str(input("Eneter House names [Type XXX to stop]: "))
if h == 'XXX' or h == 'xxx':
Flag = False
else:
total = total + 1
house.append(h)
except ValueError:
print("Please enter a word, Thanks")
print()

获取事件点数和房屋点数

for i in (event):
for j in (house):
Flag = True
while Flag:
try:
sevent = int(input("Enter %s's house for %s score: "%(j, i)))
if sevent < 0:
print("Enter a number above 0, Thanks")
else:
Flag = False
except ValueError:
print("Please enter a number above, Thanks")

if j not in scores:
scores[j] = []
scores[j].append(sevent)
score.append(sevent)

我也得到了打印总冠军和每项赛事的总分,但我不知道如何获得每项赛事的冠军,平均分最高的房子和获胜次数最多的房子。

要获得每个项目的总冠军和总分:

for house, score in sorted(scores.items(), key=lambda x: sum(x[1]),reverse=True):
print ("House %s's Total Score: %i"%(house, sum(score)))
print(scores)
print("The Overall Winner is", max(scores, key=lambda h: sum(scores[h])))
print()

输出示例如下:

House House 1's Total Score: 80House House 3's Total Score: 70
House House 2's Total Score: 40
The Overall Winner is House 1

示例数组如下:

{'House 1': [20, 60], 'House 2': [30, 10], 'House 3': [40, 30]}

感谢您的帮助,我真的很感激。

最佳答案

首先,考虑一下您构建字典 score 的方式:

  • event[0] 的得分在 score[house_name][0] 中,
  • event[1] 的得分在 score[house_name][1] 中,
  • ...
  • event[last_event_index] 的得分在 score[house_name][last_event_index] 中。

因此,要获得每个事件的获胜者,您首先必须枚举所有事件:

for event_index, event_name in enumerate(event):
...

如果您不熟悉 enumerate() :它将为每个事件名称关联一个从零开始的索引。因此,如果您有 event = ['A', 'B', 'C', 'D']enumerate(event) 将产生以下对:

  • (0, 'A')
  • (1, 'B')
  • (2, 'C')
  • (3, 'D')

现在您可以遍历所有房屋并为特定事件提取他们的分数:

for event_index, event_name in enumerate(event):
for house_name, house_scores in scores.items():
print('House %s scored %d in event %s' % (
house_name,
house_scores[event_index],
event_name,
))

为了得到最好的评分房子,我们可以把每个分数放在一个列表中并排序:

for event_index, event_name in enumerate(event):
event_scores = []
for house_name, house_scores in scores.items():
house_event_score = house_scores[event_index]
event_scores.append((house_event_score, house_name))
# This will sort 'event_scores' from the lowest score
# to the highest.
event_scores.sort()
# The winner (with the highest score) is the last element
# of the list, i.e. the element with index -1.
winner_score, winner_name = event_Scores[-1]
print('%s has won %s with score %d' % ((
winner_name,
event_name,
winner_score,
))

关于python - 代码 Python 3 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32245815/

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