2016-08-26 2 views
0

Я пытаюсь сделать личный помощник для python под названием «Sansa». Я noob, и я хочу, чтобы мой код выполнял мою переменную initial_request, только если пользователи raw_input да. Если это не так, я хочу, чтобы код выполнял последнюю команду engine.say. Я пытался добиться этого, используя словарь. Спасибо и извините за грязный код.Raw_input & If Statementments

import webbrowser 
import pyttsx 

#adding voice (i will change) 
engine = pyttsx.init() 
engine = pyttsx.init() 
voices = engine.getProperty('voices') 
for voice in voices: 
    engine.setProperty('voice', voice.id) 
#Introducing Sansa and trying to navigate through the codes. 
#serviceP =input 
first_answer = {'pos' : 'Yes', 'neg' : 'No'} 
response = engine.say("Hello my Lord. My name is Sansa and I am your personal assistant. I am here to serve you. Can I be of service?") 
engine.runAndWait() 
st = raw_input("Hello my Lord. My name is Sansa and I am your personal assistant. I am here to serve you. Can I be of service?") 
initial_Request =('What would you like to do? I can visit various websites, perform a google or youtube search, and so much more.') 

#evaluate yes or no to execute initial_Request 
if st == first_answer['pos']: 
engine.say(initial_Request) 
engine.runAndWait() 

elif st == first_answer['neg']: 
    engine.say("Ok. I'm here if you need me.") 
    engine.runAndWait() 
+0

Я думаю, что у вас просто есть ошибка отступа для двух строк после строки 'if st == first_answer ['pos']:'. Так как это не с отступом, это не в выражении if, а будет запускаться каждый раз – mitoRibo

+0

Это, похоже, не исправить. Когда я запускаю код, если я отвечаю да или нет на raw_input, он не выполняет оператор if или оператор elif. Это результат –

+0

Python 2.7.12 (по умолчанию, 1 июля 2016, 15:12:24) [GCC 5.4.0 20160609] on linux2 Тип «авторское право», «кредиты» или «лицензия()» для получения дополнительной информации , >>> =============== RESTART: /home/master/Desktop/Sansa_/Sansa.py =============== Привет, мой Господь. Меня зовут Санса, и я ваш личный помощник. Я здесь, чтобы служить вам. Могу ли я быть полезным? Да >>> ====== Привет, мой Господь. Меня зовут Санса, и я ваш личный помощник. Я здесь, чтобы служить вам. Могу ли я быть полезным? No >>> –

ответ

0

Хорошо, я нашел эту проблему, чтобы сделать программу запуска через код, такие как добавление переменной unknownResponse, добавляя операторы печати под engine.say() функции, и т.д.. Тем не менее, я все еще работаю над несколькими ошибками, такими как голос, который не проходит должным образом во всех утверждениях if и elif. Однако программа собирается вместе. Вот обновленный код.

import webbrowser 
import pyttsx 

#adding voice (i will change) 
engine = pyttsx.init() 
engine = pyttsx.init() 
voices = engine.getProperty('voices') 
for voice in voices: 
    engine.setProperty('voice', voice.id) 
    #Introducing Sansa and trying to navigate through the codes. Might need some type of loop to redirect the user 

first_answer = {'pos' : 'Yes', 'neg' : 'No'} 
engine.say("Hello my Lord. My name is Sansa and I am your personal assistant. I am here to serve you. Can I be of service?") 
engine.runAndWait() 
st = raw_input("Hello my Lord. My name is Sansa and I am your personal assistant. I am here to serve you. Can I be of service?") 
initial_Request =("What would you like to do? I can visit various websites, perform a google or youtube search, and so much more.") 
negative_Response =("Okay Master. I'm here if you change your mind.") 
#evaluate yes or no to execute initial_Request 
if st == first_answer['pos']: 
    engine.say("What would you like to do? I can visit various websites, perform a google or youtube search, and so much more.") 
    engine.runAndWait() 
    print initial_Request 

elif st == first_answer['neg']: 
    engine.say("Okay Master. I'm here if you change your mind.") 
    engine.runAndWait() 
    print negative_Response 
#add loop to make questions repeat 

unknownResponse = True 
while unknownResponse: 
    againTry =raw_input("Sorry I don't understand. Please try again.") 
    if st != first_answer['pos', 'neg']: 
     engine.say("Sorry I don't understand. Please try again.") 
     engine.runAndWait() 
    unknownResponse = False