2015-12-05 2 views
1

Je suis un nouveau venu chez CLIPS et j'écris un système interactif de détection de vin. Le système fonctionne avec des entrées comme oui et non. Mais je veux prendre un niveau de plus et lui faire accepter des valeurs comme. "Je ne suis pas sûr".Comment rechercher une chaîne dans CLIPS en utilisant les fonctions

Fondamentalement, je veux convertir le pseudocode suivant en CLIPS.

def ask_for_input(): 

    user_inp = input("gimme dat") 

    if "yes" in user_inp: 
     return "yes" 
    elif "no" in user_inp: 
     return "no" 
    elif "know" in user_inp: 
     return "idk" 
    else : 
     return "invalid" 
     # ask for input again now 

Répondre

0

Utilisez str-index pour rechercher une chaîne dans une autre. Comme "know" contient la sous-chaîne "no", vous devez d'abord rechercher "know":

CLIPS> 
(deffunction ask_for_input() 
    (bind ?user_inp (readline)) 
    (if (str-index "yes" ?user_inp) 
     then (return "yes") 
     else 
     (if (str-index "know" ?user_inp) 
     then (return "idk") 
     else 
     (if (str-index "no" ?user_inp) 
      then (return "no") 
      else (return "invalid"))))) 
CLIPS> (ask_for_input) 
yes 
"yes" 
CLIPS> (ask_for_input) 
yah 
"invalid" 
CLIPS> (ask_for_input) 
I don't know 
"idk" 
CLIPS> (ask_for_input) 
not really 
"no" 
CLIPS>