ошибка пайтон выполняет оба условия
в моем скрипте выполняется сразу два условия под if но он должен либо включить ютуб когда говорю "включи youtube" либо новости когда говорю "включи новости"
заранее спасибо
вот скрипт
while True:
# старт записи речи с последующим выводом распознанной речи
# и удалением записанного в микрофон аудио
voice_input = record_and_recognize_audio()
os.remove("microphone-results.wav")
print(voice_input)
# отделение комманд от дополнительной информации (аргументов)
voice_input = voice_input.split(" ")
command = voice_input[0]
if command.find("youtube",6,14) < 7:
webbrowser.open("https://www.youtube.com/", new=2)
else:
print("не понял")
if command.find("новости",6,14) < 7:
webbrowser.open("https://ria.ru/?ysclid=le5gjg2hvz944036307", new=2)
else:
print("не понял")
Ответы (3 шт):
Из за того что у вас 2 условия if соответственно и происходит 2 независимые проверки, объедините их:
if command.find("youtube",6,14) < 7:
webbrowser.open("https://www.youtube.com/", new=2)
elif command.find("новости",6,14) < 7:
webbrowser.open("https://ria.ru/?ysclid=le5gjg2hvz944036307", new=2)
else:
print("не понял")
voice_input = 'включи youtube'
_, command = voice_input.split()
if command == "youtube":
print("https://www.youtube.com/")
elif command == "новости":
print("https://ria.ru/?ysclid=le5gjg2hvz944036307")
else:
print("не понял")
#2
voice_input = "включи новости"
if "youtube" in voice_input:
print("https://www.youtube.com/")
elif "новости" in voice_input:
print("https://ria.ru/?ysclid=le5gjg2hvz944036307")
else:
print("не понял")
#3
dct ={"youtube": "https://www.youtube.com/", "новости":"https://ria.ru/?ysclid=le5gjg2hvz944036307"}
txt =dct[command] if command in dct else "не понял"
print(txt)
if command.find("youtube",6,14) < 7:
У вас довольно странные проверки. В случае, если find не найдёт искомую подстроку, он вернёт значение -1, которое, конечно же, меньше чем 7, и ваше условие будет выполнено. Тоже самое со вторым условием.
Вы всё-таки что определяете - что искомая подстрока обязательно должна идти с 6-й позиции, судя по тому, какие вы задали параметры? Тогда и проверяйте именно это:
if command.find("youtube",6,14) == 6:
Или можно просто добавить проверку, что получилось не -1:
result = command.find("youtube",6,14)
if 0 <= result < 7: