<p>你的代码有几个问题:</p>
<ul>
<li>你的medalTracker列表没有值。您可以使用list(allCountries)生成列表</li>
<li>您将附加到medalTracker值,这些值是字符串。你知道吗</li>
<li>你没有在medalTracker的等级计算后更新奖牌数量</li>
<li>你把国家的第一个字母和全名进行比较,所以奖牌的价值总是为0</li>
</ul>
<p>这是一个更新的工作版本</p>
<pre><code>def generate(results):
"""
return list of strings
based on data in results, a list of strings
"""
# [country_code, gold_count, silver_count, bronze_count ]
allCountries = []
for i in results:
x = i.split()
for country in x:
allCountries.append(country)
medalTracker = list(set(allCountries))
for i in medalTracker:
goldCount, silverCount, bronzeCount = 0, 0, 0
Idx = medalTracker.index(i)
for rank in results:
ranks = rank.split()
if ranks[0] == i:
goldCount += 1
elif ranks[1] == i:
silverCount += 1
elif ranks[2] == i:
bronzeCount += 1
medalTracker[Idx] = medalTracker[Idx] + " " + str(goldCount) + " " + str(silverCount) + " " + str(bronzeCount)
return medalTracker
print(generate(["ITA JPN AUS", "KOR TPE UKR", "KOR KOR GBR", "KOR CHN TPE"]))
</code></pre>
<p>输出</p>
<pre><code>['TPE 0 1 1', 'JPN 0 1 0', 'UKR 0 0 1', 'CHN 0 1 0', 'ITA 1 0 0', 'AUS 0 0 1', 'GBR 0 0 1', 'KOR 3 0 0']
</code></pre>