Если, иначе не работает при проверке, если функция верна - PullRequest
0 голосов
/ 20 марта 2020

Я новичок в Python программировании. Недавно я решил создать Audio Assistant (в основном чат-бота со звуком), но я столкнулся с проблемой при попытке создать выходы. Я написал код таким образом, что, если то, что пользователь говорит / просит бот сделать, является чем-то, что не было определено для бота, или у него нет никаких команд относительно того, что делать, если задан этот конкретный аргумент c тогда это должно дать определенный c вывод. Код для этого выглядит следующим образом:

# to take input from the user:
command = input("Whatever you want to say: ")
command = command.lower()
cmd = command.split()

# below are the commands to give output after processing the input
if 'hi' in cmd:
  print('hey')
elif (('how')and('are'))and('you') in cmd:
  print('All good! Wbu?')
elif (('hi')and('hru')) in cmd:
  print('Hey! Everyting is fine! Wbu?')
else:
  print('sorry, did not understand what you meant!')

Проблема с приведенным выше кодом заключается в том, что, если пользователь говорит: (привет, hru?), Программа только говорит: эй. Это потому, что я использовал в программе выражения elif. Итак, я решил изменить все из них на операторы if:

if 'hi' in cmd:
  print('hey')
if (('how')and('are'))and('you') in cmd:
  print('All good! Wbu?')
if (('hi')and('hru')) in cmd:
  print('Hey! Everyting is fine! Wbu?')
else:
  print('sorry, did not understand what you meant!')

, что он делает, он хорошо печатает выходные данные, но если предполагается, что вывод любого другого оператора должен быть дан, он дает оператор, но также дает вывод для else.

Затем я попытался определить функцию для выходов, и если это True, то есть, если то, что пользователь говорит, имеет указанный вывод, то он должен дать вывод, если нет, тогда программа должна вывести исключение.

def commands():
  if 'hi' in cmd:
    print('hey')
  if (('how')and('are'))and('you') in cmd:
    print('All good! Wbu?')
  if (('hi')and('hru')) in cmd:
    print('Hey! Everyting is fine! Wbu?')

if commands()==True:
  commands()
else:
  print('sorry, did not understand what you meant!')

Это тоже как первое, печатает как оператор, так и исключение. Как мне это решить?

1 Ответ

0 голосов
/ 20 марта 2020

Хотя в английском языке sh (и других человеческих языках) часто говорят такие вещи:

, если X и Y в Z ...

… Это не совсем то, как работает логическая логика c.

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

, если X-and-Y находится в Z ...

И что-то вроде ('hi' and 'hru') даст вам бесполезный результат ('hru', я думаю ).

Что вам нужно:

, если X в Z, а Y в Z

Чтобы выполнить sh, перепишите ваши условия следующим образом:

if ('hi' in cmd) and ('hru' in cmd):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...