Моя задача - вводить пользователя в год и использовать этот ввод для поиска по очереди в текстовом файле для общего количества золотых медалей, выигранных в этом году спортсменами-олимпийцами. Текстовый файл содержит тысячи записей, отсортированных как это:Почему моя инструкция if в Python оценивает значение False?
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
Потому что 'line.strip()' никогда не равен '" 1 "'. –
Вам нужно перейти к следующей строке после проверки на год. Прямо сейчас, '' вызовы '' line.strip() '' действуют на строку _same_. – rmccloskey
Вы печатаете 'Неверный год! 'Для всех строк, содержащих имена и позиции. – Barmar