Другие ответы уже правильно решают вашу конкретную проблему (другими словами, цикл выполняется только в том случае, если n/2 + 1 > 2
, то есть n/2 > 1
, что означает n > 2
с разделением по новому стилю [[python 3] или подходящий импорт из будущего или флаги ...]], n > 3
с усеченным делением в классическом стиле).
На конкретный вопрос, который вы задали:
Так как я использую или это должно быть
любой из них является истинным, поэтому
заказ не считается?
Порядок учитывает , потому что or
(например, and
) является оператором короткого замыкания: в частности, or
это гарантированный для перехода слева направо, и остановка, если левый операнд истинен (потому что ему не нужно знать о правом). Это не имеет значения для вашего конкретного кода, но важно в таких случаях, как, например ::
if i == 0 or n / i > 3: ...
Если or
не идет слева направо (и останавливается как можно скорее), правый операнд может выполняться даже тогда, когда i
равен 0
- но тогда деление вызовет исключение! С правилами Python этот фрагмент кода не будет вызывать исключения (если i
- это, по крайней мере, int; -).
Опять же: это не имеет ничего общего с конкретной проблемой, с которой вы столкнулись (см. Другие ответы и начало этой), но для вас важно знать на будущее, поэтому, так как вы спросили, я взял возможность объяснить! -)