我的任务是让用户输入一年并使用该输入在文本文件中逐行搜索奥林匹克运动员当年赢得的金牌总数。该文本文件包含数千个条目,如下所示:
LAST_NAME
FIRST_NAME
YEAR
POSITION
\n
我认为这样做的方法是确保年份匹配,如果匹配,则将名为blockIsValid
的变量的值设置为True
。然后该程序将检查该块是否有效(以避免考虑其他年份的金牌),如果是,则通过寻找一个(位置,表示金币)来检查金牌。将金牌记录在变量blockIsValid
中后,False
会重置为goldMedals
。
检查年份部分有效,但它从未找到黄金,而是每次都显示: [注意]我们应该检查每一行,这就是为什么有一堆行说“不正确的一年!“
def findAnnualMedals(year):
blockIsValid = None
goldMedals = 0
file = open('athletes.txt', encoding='utf-8')
for currentLine, line in enumerate(file):
if line.strip() == year:
print("Correct year!")
blockIsValid = True
else:
print("Incorrect year!")
blockIsValid = False
if blockIsValid == True:
if line.strip() == "1":
print("Gold!")
goldMedals += 1
else:
print("Not gold!")
blockIsValid = False
答案 0 :(得分:1)
如果稍微重新排列逻辑,这将更容易。将金牌支票放在年度支票前面的顶部。
foundYear = False
for currentLine, line in enumerate(file):
if foundYear:
if line.strip() == "1":
print("Gold!")
goldMedals += 1
else:
print("Not gold!")
foundYear = False
elif line.strip() == year:
print("Correct year!")
foundYear = True
else:
print("Incorrect year!")