我的任務是讓用戶輸入一年,並使用該輸入在文本文件中一行一行地搜索奧運選手當年贏得的金牌總數。該文本文件包含成千上萬的排序是這樣的條目:爲什麼我在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