【问题标题】:Python solution needed需要 Python 解决方案
【发布时间】:2017-10-28 22:20:45
【问题描述】:

我有三个列表 Teams= [T1,T2,T3,T4] 以及获胜次数 Nwins[10,12,10,5] 以及他们的进球数 GScored[33,34,22,28]。我想根据他们的胜利次数找到赛季获胜者,但是如果两支球队在本赛季的胜利相同,那么他们的进球数。同样,获胜次数最少的将降级,如果有两场则进球最少的将被淘汰。我们将不胜感激您的帮助

【问题讨论】:

  • 您有任何示例代码可以提供吗? SO 不是代码编写服务,请先尝试一下,然后再要求 SO 为您做这件事,而无需任何明确的努力。
  • 不清楚什么例如Nwins[10,12,10,5] 表示。你的意思是Nwins 是一个列表,比如Nwins = [10, 12, 10, 5]
  • 您必须编辑您的问题,否则它可能会被标记和删除。请包含代码 sn-ps 和示例。
  • 是的。这是三个列表,第一个包含球队名称,第二个包含一个赛季的总胜场,第三个包含他们的得分。我可以使用 max 函数和 min 函数来找到领导者和降级球队,但是当两支球队的胜利相同时我会卡住

标签: python python-2.7 python-3.x list


【解决方案1】:
winner = max(zip(Nwins, GScored, Teams))[2]

【讨论】:

    【解决方案2】:
    Teams = ["T1","T2","T3","T4"]
    NoWins = [10,0,10,5]
    GScored = [33,34,22,28]
    
    highestWins = max(NoWins)
    if NoWins.count(highestWins) == 1:
       winner = Teams[NoWins.index(highestWins)] 
    else:
       options = [g for i, g in enumerate(GScored) if NoWins[i] == highestWins]
       winner = [t for i, t in enumerate(Teams) if NoWins[i] == highestWins][options.index(max(options))]
    
    lowestWins = min(NoWins)
    if NoWins.count(lowestWins) == 1:
       relegated = Teams[NoWins.index(lowestWins)]
    else:
       options = [g for i, g in enumerate(GScored) if NoWins[i] == lowestWins]
       relegated = [t for i, t in enumerate(Teams) if NoWins[i] == lowestWins][options.index(min(options))]
    

    其中winner"T1"(我修改了您的示例)和relegated"T2"

    如果NoWins = [0, 2, 2, 2]GScored = [4, 4, 3, 3]winner"T2"relegated"T1"

    【讨论】:

    • @StefanPochmann 好点,我并没有将进球数限制在只与顶级球队进行比较,我现在将添加到答案中!
    • @StefanPochmann 我终于让它工作了,非常很乱,但它工作。成功通过了所有测试(规则绘图分数以及获胜者绘图分数),所以至少它有效!不过,您的答案非常、非常、非常更简洁,所以我 +1 :)
    • @StefanPochman 稍后会查看,en.oxforddictionaries.com/definition/e.g
    • @StefanPochmann 我想我终于让它工作了,请尝试找到一个失败的案例,但现在似乎一切都通过了!谢谢你的耐心。 :)
    • 是的,我认为现在唯一的问题是缩进 3 个空格:-P
    猜你喜欢
    • 2016-03-31
    • 1970-01-01
    • 2023-01-26
    • 2018-12-11
    • 2017-10-02
    • 2015-06-04
    • 1970-01-01
    • 2021-12-19
    • 2019-11-17
    相关资源
    最近更新 更多