#python #python-3.x
#python #python-3.x
Вопрос:
Я получаю ошибку при вычислении четных и нечетных чисел в диапазоне 2008 2009 2010 и 2011. На самом деле этот код для вычисления победителя команды А, каждый нечетный год команда будет выигрывать. Вот почему в моем коде, когда его нечетный год, он будет 1.
i = 0
sum = 0
n = list(map(int, input("Year : ").split()))
for i in n :
if i % 2 != 0 :
sum = 1
else :
sum = 0
print("Win :", sum)
# Input
2008 2009 2010 2011
# Output
1 (This is the problem, it should be 2 wins but i dont know why the output is always 1)
Комментарии:
1.
else: sum = 0
кажется неправильным, нет?2. Я думаю, что нет, я не даю значения для четного числа
3. для первой итерации sum = 0.
i
четно, поэтому sum = 0. На второй итерацииi
нечетно. следовательно, сумма =1, а сумма теперь равна 1. На третьей итерации i является четным. Итак, теперь в блоке else вы присваиваете sum значение 0. Значение, сумма = 0. на следующей итерации i нечетное, следовательно, сумма = 1. Но поскольку сумма = 0, сумма изменяется на 1. и вот как вы получаете результат 1. По сути, ваш блок else изменяет сумму на 0, когда встречается четный год, и весь прогресс теряется.4. @illusion Спасибо, что объяснили это, я удалил эту сумму = 0, и это работает так, как я хочу
Ответ №1:
Я думаю, вам это не нужно else :sum = 0
. Вы можете продолжить с
i = 0
sum = 0
n = list(map(int, input("Year : ").split()))
for i in n :
if i % 2 != 0 :
sum = 1
print("Win :", sum)
Комментарии:
1. Я вижу, я попробовал это, как только вы ответили, и да, это сработало так, как я хочу. Спасибо, что помогли мне…
Ответ №2:
juanpa_arrivillaga пытался заставить вас заметить, что когда вы сталкиваетесь с четным годом, вы устанавливаете сумму в 0. Когда это нечетный год, вы увеличиваете сумму. Всякий раз, когда вы устанавливаете сумму в 0, это отменяет любое увеличение, которое вы делали в предыдущих итерациях цикла. Попробуйте вывести sum в конце каждого цикла и посмотреть, говорит ли он то, что, по вашему мнению, он должен сказать.
Ответ №3:
else :
sum = 0
Этот оператор возвращает значение sum обратно к нулю.
Следовательно, вы можете просто отказаться от него.
Комментарии:
1. Да, я его удалил
2. тогда теперь он должен давать правильный результат