Python Virtual Assistant не продолжается после блока кода. пока 1: - PullRequest
0 голосов
/ 21 апреля 2020

Я предоставлю код для порции. Он не продолжается после использования команд в блоке while. Я думаю, что это кодовый блок text = get_audio (). Lower (), который дает мне ошибку.

def process_text():
pass

if __name__ == "__main__":
assistant_speaks('''Hello, I am a Virtual Assistant. 
                I am here to make your life easier. You can command me to perform 
                various tasks such as calculating sums or opening applications. 
                Please tell me who you are.''')
name = 'are'
name = get_audio()
assistant_speaks("Hello, " + name + '.')

while 1:

    assistant_speaks("What can i do for you?" + name + '.')
    text = get_audio().lower()

    if text == 0:
        continue

    if "exit" in str(text) or "bye" in str(text) or "sleep" in str(text):
        assistant_speaks("Ok bye, " + name + '.')
        break

    # calling process text to process the query
        process_text()


    def process_text():
        try:
            if 'search' in input or 'play' in input:
                # a basic web crawler using selenium
                search_web(input)
                return

            elif "who are you" in input or "define yourself" in input:
                speak = '''Hello, I am a virtual assistant. 
                I am here to make your life easier. You can command me to perform 
                various tasks such as calculating sums or opening applications.'''
                assistant_speaks(speak)
                return

По сути, он не отвечает на любые вопросы, когда я задаю elifs. Прошлая попытка:

У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 22 апреля 2020

Есть как минимум три ошибки, которые вы должны исправить, чтобы получить желаемое поведение от вашей программы:

  • Замените input на text внутри блока try. В Python, input является встроенной функцией, а не строкой. Вы уже присвоили ответ пользователя переменной text, так почему бы не использовать этот? :)
  • Определите вашу process_text функцию до того, как вы ее вызовете. На практике вам следует переместить строку, где вы вызываете process_text(), куда-нибудь после определения этой функции.
  • Есть также несколько ошибок отступа, и самое важное происходит при вызове функции process_text(): Вы должны отступить эту строку на один уровень назад, иначе она будет выполнена внутри блока if "exit" in ....

Вы должны также определить process_text до того, как l oop, потому что вы просто нужно определить это один раз.

...