Проблема с логикой !=

SeverAll

Новичок
Пользователь
Май 4, 2020
3
2
3
1. Windows 10
2. Python 3.8.2
attrs 19.3.0
backcall 0.1.0
bleach 3.1.4
certifi 2020.4.5.1
chardet 3.0.4
colorama 0.4.3
decorator 4.4.2
defusedxml 0.6.0
entrypoints 0.3
idna 2.9
ipykernel 5.2.1
ipython 7.13.0
ipython-genutils 0.2.0
ipywidgets 7.5.1
jedi 0.17.0
Jinja2 2.11.2
json5 0.9.4
jsonschema 3.2.0
jupyter-client 6.1.3
jupyter-core 4.6.3
jupyterlab 2.1.1
jupyterlab-server 1.1.1
MarkupSafe 1.1.1
mistune 0.8.4
nbconvert 5.6.1
nbformat 5.0.6
notebook 6.0.3
pandocfilters 1.4.2
parso 0.7.0
pickleshare 0.7.5
pip 20.0.2
prometheus-client 0.7.1
prompt-toolkit 3.0.5
Pygments 2.6.1
pyrsistent 0.16.0
python-dateutil 2.8.1
pywin32 227
pywinpty 0.5.7
pyzmq 19.0.0
requests 2.23.0
Send2Trash 1.5.0
setuptools 41.2.0
six 1.14.0
terminado 0.8.3
testpath 0.4.4
tornado 6.0.4
traitlets 4.3.3
urllib3 1.25.9
wcwidth 0.1.9
webencodings 0.5.1
widgetsnbextension 3.5.1
a = int(input())
if a != 12 or a != 13 or a != 14 :
print("Y")
else:
print("N")

По идее, когда я ввожу 12, 13 или 14 должно вывести "N". Ведь а не равно 12 - верно, равно - неверно (соответственно, должно срабатывать else). Но почему-то выводится Y.
 

3xΩ

Новичок
Пользователь
Апр 28, 2020
2
0
1
Разобрался почему:

a != 12 or a != 13 or a != 14

подставляем туда 12

12 != 12 or 12 != 13 or 12 != 14

False or True or True.... итого True
Точно, после первой проверки будут проверяться остальные условия
 

borntohack

змееуст
Команда форума
Модератор
Апр 22, 2020
78
62
18
39
Москва, РФ
молодец.
правильная логика:
Python:
if a not in [12,13,14]:
    print("Y")
else:
    print("N")
 

3xΩ

Новичок
Пользователь
Апр 28, 2020
2
0
1
1. Windows 10
2. Python 3.8.2
attrs 19.3.0
backcall 0.1.0
bleach 3.1.4
certifi 2020.4.5.1
chardet 3.0.4
colorama 0.4.3
decorator 4.4.2
defusedxml 0.6.0
entrypoints 0.3
idna 2.9
ipykernel 5.2.1
ipython 7.13.0
ipython-genutils 0.2.0
ipywidgets 7.5.1
jedi 0.17.0
Jinja2 2.11.2
json5 0.9.4
jsonschema 3.2.0
jupyter-client 6.1.3
jupyter-core 4.6.3
jupyterlab 2.1.1
jupyterlab-server 1.1.1
MarkupSafe 1.1.1
mistune 0.8.4
nbconvert 5.6.1
nbformat 5.0.6
notebook 6.0.3
pandocfilters 1.4.2
parso 0.7.0
pickleshare 0.7.5
pip 20.0.2
prometheus-client 0.7.1
prompt-toolkit 3.0.5
Pygments 2.6.1
pyrsistent 0.16.0
python-dateutil 2.8.1
pywin32 227
pywinpty 0.5.7
pyzmq 19.0.0
requests 2.23.0
Send2Trash 1.5.0
setuptools 41.2.0
six 1.14.0
terminado 0.8.3
testpath 0.4.4
tornado 6.0.4
traitlets 4.3.3
urllib3 1.25.9
wcwidth 0.1.9
webencodings 0.5.1
widgetsnbextension 3.5.1
a = int(input())
if a != 12 or a != 13 or a != 14 :
print("Y")
else:
print("N")

По идее, когда я ввожу 12, 13 или 14 должно вывести "N". Ведь а не равно 12 - верно, равно - неверно (соответственно, должно срабатывать else). Но почему-то выводится Y.
По идее когда ты вводишь 12 выводит N, в остальных случаях срабатывает первое условие и выводиться Y
 

SeverAll

Новичок
Пользователь
Май 4, 2020
3
2
3
По идее когда ты вводишь 12 выводит N, в остальных случаях срабатывает первое условие и выводиться Y
Не, если вводишь 12 все равно выводит Y.
 

SeverAll

Новичок
Пользователь
Май 4, 2020
3
2
3
Не, если вводишь 12 все равно выводит Y.
Разобрался почему:

a != 12 or a != 13 or a != 14

подставляем туда 12

12 != 12 or 12 != 13 or 12 != 14

False or True or True.... итого True
 
  • Мне нравится
Реакции: borntohack и root

Форум IT Специалистов