Я пытаюсь ответить на следующий практический вопрос:
"Написать цикл (мы предлагаем цикл for), который печатает числа от минимума до максимума, включая минимальный и максимальный значения самих себя. Если четное значение равно Истина, выведите только четные числа. Если четное значение равно Ложь, выведите только нечетные числа . Вы можете предположить, что минимум всегда будет меньше максимума. "
Для этого я написал следующий код, и он работает для определенных минимальных и максимальных значений:
minimum = 5
maximum = 14
even = True
if even:
for numbers in range(minimum, maximum+1, 2):
if numbers%2 == 0:
print(numbers)
elif numbers%2 == 1:
numbers += 1
print(numbers)
else:
for numbers in range(minimum, maximum+1, 2):
if numbers%2 == 1:
print(numbers)
elif numbers%2 == 0:
numbers += 1
print(numbers)
Это сгенерировало мой желаемый результат: 6, 8, 10, 12, 14
.
Однако, когда мои минимальные, максимальные и четные значения изменены, например, ниже:
minimum = 29
maximum = 33
even = True
Код как-то генерирует вывод 30, 32 and 34
. 34> 33 и поэтому не должно быть там, но это так. Я предполагал, что range()
работает так, что он не включает максимальное число, и, таким образом, я использовал maximum+1
, чтобы включить maximum
в качестве вопроса, но он включал число, которое даже превышает maximum+1
!
Чтобы проверить дальше, я попытался изменить переменные следующим образом и обнаружил нечто столь же интересное, что и загадочное:
minimum = 1
maximum = 4
even = False
Как и ожидалось, я получил 1, 3
в качестве вывода. Однако, когда я изменил minimum = 2
, вместо этого я получил 3, 5
!
Может кто-нибудь объяснить мне, почему код действует таким образом? Заранее спасибо!