Форум сайта python.su
0
Начал работать над небольшим голосовым помощником, основу взял с инета. Хочу начать изучение питона именно с подобного рода проектов. Есть опыт в делфи.
А теперь вопрос: выделил строчки, после добавления которых вылетает с ошибкой “incosistent use of tabs” или что-то вроде этого.
только часть кода
def work(self): print("Загружаюсь...") with self._microphone as source: self._recognizer.adjust_for_ambient_noise(source) try: while True: print("Кьюи активна, жду команд...") with self._microphone as source: audio = self._recognizer.listen(source) print("поняла...") try: statement = self._recognizer.recognize_google(audio, language="ru_RU") statement=statement.lower() if((statement.find("калькулятор")!=-1) and (statement.find("открой")!=-1)): self.osrun('calc') if((statement.find("калькулятор")!=-1) and (statement.find("закрой")!=-1)): PROCNAME = "Calculator.exe" for proc in psutil.process_iter(): if proc.name == PROCNAME: proc.kill() else self.say('Процесс уже закрыт!')
Отредактировано dsubbs (Янв. 11, 2018 13:04:23)
Офлайн
221
В качестве отступа используйте только 4 пробела, а не табуляцию. И да, этот вопрос достаточно легко гуглится - не обязательно было спрашивать это здесь.
Офлайн
0
Да, извиняюсь, ожидал, что проблема совсем не в табуляции. Но выделенный код все равно не работает, хотелось бы понять почему.
Офлайн
221
dsubbs
не работает это ни о чем не говорит - что не работает? Ошибка какая то? Результат не верный? Это же принципиально разные вещи. В Питоне все хорошо с интроспекцией, поэтому полный traceback ошибки которую выдает питон игнорировать нельзя, если хотите разбираться с проблемами эффективно.
Ну и код на форумах и тп принято вставлять в специальные теги, что бы не терялось форматирование. Вы же видите что Ваш код превратился в кашу. И что мы там разбирать будем? правильный ответ - ничего, я даже не посмотрю на него. Ведь это бессмысленно, хотя бы пока отступы не будут верными.
Офлайн
186
> Да, извиняюсь, ожидал, что проблема совсем не в табуляции.
А проблема не с табуляцией, а стем что ты умудрился смешать её с пробелами. Что-бы этого не происходило включи подсветку табов/пробелов в редакторе.
Офлайн
0
Такс, с более-менее тривиальными вещами питона разобрался. 
Насчет закрытия: гуглил и пытался сделать по инструкции со стаковерфлоу, всё тщетно. В идеале, нужна функция, которая может закрывать приложение по его pid, но пока что достаточно, если оно будет закрывать системные приложения, открытые из-под самой программы (калькулятор, например)
Для этого пишу функцию:
def pclose(self, procname): self.say('Закрываю ' + str(procname)) #say - функция озвучки заданной фразы for proc in psutil.process_iter(): if proc.name == str(procname): proc.terminate()
Отредактировано dsubbs (Янв. 11, 2018 12:39:29)
Офлайн
186
> В идеале, нужна функция, которая может закрывать приложение по его pid
import os import signal os.kill(int(PID), signal.SIGKILL)
Офлайн