Почему работает вторая программа, а не первая? - PullRequest
0 голосов
/ 03 июля 2019

Первый:

a = int(input())
if a%4 == 0:
    a += 1
if a%4 != 0:
    a -= 1
print(a)

Второй:

a = int(input())
b = a%4
if b == 0:
    a += 1
if b != 0:
    a -= 1
print(a)

1 Ответ

8 голосов
/ 03 июля 2019

Возможно, первое изменится a до того, как будет оценено второе условие if, и поэтому будет вести себя по-разному:

if a%4 == 0:
    a += 1 # this influences the result of the next IF
if a%4 != 0:
    a -= 1

На самом деле, в данном конкретном случае, если первое условие истинно, то после добавления 1 к a второе условие также будет истинным, и поэтому a снова вычитает 1 из него.

вторая версия сначала сохраняет в b результат, необходимый для условий для работы с исходным значением , и только затем выполняет модификацию a, которая больше не играет роли в условиях if. Там гарантируется, что выполняется только одно из двух if условий.

Тем не менее, большинство просто использует else, что устраняет эту проблему:

if a%4 == 0:
    a += 1
else:
    a -= 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...