Как я могу сделать, если elif и else в случае?

#python

#python

Вопрос:

Я пытаюсь создать голосовой помощник на испанском языке. Я не знаю, как создать регистр с if помощью, elif и else .

     if texto == nada:
      engine.say("Ok estare para  ti cuando me necesites")
      engine.runAndWait()
      
    elif texto == notenecesito:
      engine.say("Ok estare para  ti cuando me necesites")
      engine.runAndWait()
    elif texto == lahora:
      engine.say("La hora es"  current_time)
      engine.runAndWait()
      print(Fore.RED current_time)
    else:
      engine.say("buscando "   texto ,"Abriendo el navegador")
      engine.runAndWait()
      webbrowser.open("https://www.google.com/search?q=" texto)
 

Ответ №1:

Похоже, у вас ошибка отступа в вашем коде. В python нет переключателя, поэтому для этого вам нужно использовать if-elif-else . Если вы хотите, вы можете создать функцию, которая будет работать как переключатель case. Вот так:

 def switch(texto):
    if texto == "nada":
        engine.say("Ok estare para  ti cuando me necesites")
        engine.runAndWait()
      
    elif texto == "notenecesito":
        engine.say("Ok estare para  ti cuando me necesites")
        engine.runAndWait()
    elif texto == "lahora":
        engine.say("La hora es"  current_time)
        engine.runAndWait()
        print(Fore.RED current_time)
    else:
        engine.say("buscando "   texto ,"Abriendo el navegador")
        engine.runAndWait()
        webbrowser.open("https://www.google.com/search?q=" texto)
 

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

 def switch(texto):
    switcher = {"nada":"Ok estare para  ti cuando me necesites", "notenecesito":"Ok estare para  ti cuando me necesites", .......}
    return switcher.get(texto, None)
 

Комментарии:

1. да, это для формата кода stackoverflow, idk, как сделать дело в этом коде

2. В python нет такого переключателя, как в C . Для этого вы должны использовать if-elif-else . Вы можете создать функцию с именем switch с аргументом textto и внутри этой функции написать if-elif-else . Затем вы можете использовать эту функцию всякий раз, когда захотите использовать регистр переключения

3. функция (textto), если elif else ?

4. да, вы можете сделать как переключатель def(textto): if textto==»..»:…………

5. мне нужно закрыть эту функцию?

Ответ №2:

Ошибка отступа: ожидаемый блок с отступом при попытке

 def switch(texto):
    if texto == "nada":
        engine.say("Ok estare para  ti cuando me necesites")
        engine.runAndWait()
 

Ответ №3:

Чтобы имитировать оператор switch в python, вы можете определить вспомогательную функцию следующим образом:

 def switch(v): yield lambda *c: v in c
 

И использовать его в C-подобном стиле:

 for case in switch(texto):

    if case(nada, notenecesito):
       engine.say("Ok estare para ti cuando me necesites")
       engine.runAndWait()
       break
  
    if case(lahora):
       engine.say("La hora es"  current_time)
       engine.runAndWait()
       print(Fore.RED current_time)
       break
else:
    engine.say("buscando "   texto ,"Abriendo el navegador")
    engine.runAndWait()
    webbrowser.open("https://www.google.com/search?q=" texto)