<p>此代码是一个错误(tm)修复程序—它假定数据是正确的,并在找到正确的年份时设置标志。这不是一个好的解决方案:更好的解决方案(在我看来)是先将数据加载到数据结构中(可能是一个字典),然后搜索字典</p>
<pre><code>from __future__ import print_function
def main():
year = str(input("Enter year to count its winners: "))
goldmedal = 0
found_year = False
openFile = open("test.txt")
gold = "1"
for line in openFile.read().split('\n'):
if year in line:
found_year = True
continue:
if found_year:
if gold in line:
goldmedal = goldmedal + 1
found_year = False
print("Gold Medals: ", goldmedal)
</code></pre>
<p>更好的解决方案是:</p>
<pre><code>from __future__ import print_function
def main():
winners = []
with open("test.txt") as openfile:
surname, firstname, year, medal, blank = next(openfile), next(openfile), next(openfile), next(openfile), next(openfile)
winners.append({"Surname":surname,"Firstname":firstname,"Medal":medal})
year = str(input("Enter year to count its winners: "))
goldcount = sum([1 for winner in winners if winner.year=year and medal=1])
print ("Gold Medals", goldcount)
</code></pre>
<p>注意:这些应该是好的,但我也没有测试。你知道吗</p>