Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 25, 2021 22:44:50

K03blPb
Зарегистрирован: 2021-09-25
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна помощь с кодом

Здравствуйте. Я решаю задание ЕГЭ по информатике и возник вопрос, почему этот код

 for x in range (2):
    for y in range (2):
        for z in range (2):
            for w in range (2):
                F =  (( not x or y) and (not y or w)) or (z == (x or y))
                if not F:
                    print ( x,y,z,w )

выводит
0 1 0 0
1 0 0 0
1 0 0 1
1 1 0 0
(все верно)
А этот код
 for x in range (2):
    for y in range (2):
        for z in range (2):
            for w in range (2):
                F =  not(( not x or y) and (not y or w)) or (z == (x or y))
                if F:
                    print ( x,y,z,w )
выводит это
0 0 0 0
0 0 0 1
0 1 0 0
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 1 0
1 1 1 1
Разница ведь в том, что я переместил not на другое место. Возможно, вопрос глупый, но я бы хотел во всем разобраться.

Офлайн

#2 Сен. 25, 2021 23:10:45

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9878
Репутация: +  853  -
Профиль   Отправить e-mail  

Нужна помощь с кодом

K03blPb
Возможно, вопрос глупый, но я бы хотел во всем разобраться.
K03blPb
  
or (z == (x or y)
Похоже на ошибку.

И убери лишние пробелы, которые навставлял вокруг скобок. Как писать код, написано в PEP8.



Офлайн

#3 Сен. 26, 2021 09:39:48

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Нужна помощь с кодом

K03blPb
я переместил not на другое место
вы изменили код, точнее условие соответственно результат другой будет
 >>> f = bool((not 0 or 1) and  (not 1 or 1))
>>> f
True
>>> f = bool(not(not 0 or 1) and  (not 1 or 1))
>>> f
False
>>>

Отредактировано marvellik (Сен. 26, 2021 09:40:03)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version