我是 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/