我的任务是让用户输入一年,并使用该输入在文本文件中一行一行地搜索奥运选手当年赢得的金牌总数。该文本文件包含成千上万的排序是这样的条目:为什么我在Python中的if语句评估为False?
LAST_NAME
FIRST_NAME
YEAR
POSITION
\n
我认为这样做是要确保今年比赛的方式,如果确实如此,设置一个名为blockIsValid
到True
变量的值。然后该程序将检查该块是否有效(以避免考虑其他年份的金牌),如果是,则通过寻找一个金牌(该位置,表示黄金)来检查金牌。 blockIsValid
然后在将金牌记录在变量goldMedals
中之后重置为False
。
检查年份的工作,但它永远不会找到黄金,而是每次都显示这个: [注意]我们应该检查每一行,这就是为什么有一堆行说“不正确的一年! “
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
因为'line.strip()'永远不会等于'“1”'。 – 2014-09-20 20:24:09
您需要在查看年份后进入下一行。现在,''line.strip()''调用都在_same_行上。 – rmccloskey 2014-09-20 20:24:14
您正在为所有包含名称和位置的行打印“年份不正确!”。 – Barmar 2014-09-20 20:24:58