• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Решено != в Python

M

MindHunt3r

Пишу такой код:
Код:
user_choise = input("Начнём? (Д/н)")
if user_choise != 'Д' or user_choise != 'д' or user_choise != 'Н' or user_choise != 'н':
    print("Вбивай корректные данные, чувак")
Проблема в том, что "Вбивай корректные данные, чувак" выводится даже в случае, если я ввёл Д или Н, хотя такое сообщение должно появляться только в случае не корректного ввода.
 

OBLIVIONNN

Green Team
22.08.2017
144
92
BIT
1
Я не силен в python, но может быть нужно делать так ?
Это пример с интернета взял.
Код:
a = int(input())
if a < -5:
    print('Low')
elif -5 <= a <= 5:
    print('Mid')
else:
    print('High')

Код:
user_choise = input("Начнём? (Д/н)")
if user_choise == 'Д' or 'д':
    print('Yes)
elif user_choise == 'Н' or 'н':
    print('No')
else:
    print('Вбивай корректные данные, чувак')
 
  • Нравится
Реакции: MindHunt3r

Citizen0

Green Team
07.02.2017
203
228
BIT
0
Ни разу не питонист, но у Вас явно ошибка в логике.
Условие выполнится, если хотя бы одно выражение истинно
Код:
if user_choise != 'Д' or user_choise != 'д' or user_choise != 'Н' or user_choise != 'н':
Допустим юзер указал 'Д'
Код:
if 'Д' != 'Д' or 'Д' != 'д' or 'Д' != 'Н' or 'Д' != 'н':
Код:
if false or true or true or true:
Допустим юзер указал 'А'
Код:
if 'А' != 'Д' or 'А' != 'д' or 'А' != 'Н' or 'А' != 'н':
Код:
if true or false or false or false:
Поэтому у Вас всегда отображается сообщение про чувака.
Нужно использовать and
Код:
if user_choise != 'Д' and user_choise != 'д' and user_choise != 'Н' and user_choise != 'н':
Или not in
Код:
user_choise = input("Начнём? (Д/н)")
good_letters = ['Д','д','Н','н']
if user_choise not in good_letters:
    print("Вбивай корректные данные, чувак")
Или с приведением ввода к нижнему регистру
Код:
user_choise = input("Начнём? (Д/н)")
good_letters = ['д','н']
if user_choise.lower() not in good_letters:
    print("Вбивай корректные данные, чувак")
 
M

MindHunt3r

Благодарю, Вы мне очень помогли.
[doublepost=1510488517,1510488387][/doublepost]Возможно будет работать и так, но я уже решил проблему по-другому. Всё равно спасибо огромное!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!