首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码Python 3的问题

代码Python 3的问题
EN

Stack Overflow用户
提问于 2015-08-27 09:37:53
回答 1查看 63关注 0票数 2

我对python非常陌生,而且我还在学习,我很难把它放在我的数组中:

  • 每项赛事的获胜者
  • 平均水平最好的房子
  • 获胜人数最多的那所房子

使用此代码:

要获取事件名称,请执行以下操作:

代码语言:javascript
复制
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()

要弄到房子的名字:

代码语言:javascript
复制
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()

为了获得事件和房屋的意义

代码语言:javascript
复制
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)

我也有打印总冠军和每个项目的总得分,但我不知道如何获得每个项目的赢家,房子和房子的最佳平均和最多的获胜数。

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

代码语言:javascript
复制
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()

输出的一个例子是:

代码语言:javascript
复制
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

示例的数组如下:

代码语言:javascript
复制
{'House 1': [20, 60], 'House 2': [30, 10], 'House 3': [40, 30]}

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

EN

回答 1

Stack Overflow用户

发布于 2015-08-27 09:50:32

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

  • event[0]的分数是在score[house_name][0]
  • event[1]的分数是在score[house_name][1]
  • ..。
  • event[last_event_index]的分数在score[house_name][last_event_index]中。

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

代码语言:javascript
复制
for event_index, event_name in enumerate(event):
    ...

如果您不熟悉枚举():它会将基于零的索引与每个事件名称关联起来。因此,如果您有event = ['A', 'B', 'C', 'D']enumerate(event)将生成以下对:

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

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

代码语言:javascript
复制
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,
        ))

为了获得最好的得分,我们可以将每个分数放在一个列表中,并对其进行排序:

代码语言:javascript
复制
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,
    ))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32245815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档