我正在创建一个手机维修专家系统。
答案必须只是[是或否],其他任何内容都会显示"输入无效。" 我怎样才能在我的代码中捕获它?
ask(Question) :- write('Question: '),
write(Question),
write('? '),
write('(yes or no) : '),
read(Response),
nl,
((Response == yes ; Response == y) -> assert(yes(Question)) ;
(Response==no ; Response ==n) -> assert(no(Question)) ;
write('\nInvalid Input!!!\n'),fail).
如果输入错误的拼写,我仍然无法实现我想要显示的内容。
答案 0 :(得分:1)
嗯......你的代码肯定有效。如果您使用gprolog,请务必使用assert
或asserta
更改assertz
。
| ?- [expert].
compiling *** for byte code...
*** compiled, 7 lines read - 2111 bytes written, 14 ms
(1 ms) yes
| ?- ask(man).
Question: man? (yes or no): y.
yes
| ?- ask(woman).
Question: woman? (yes or no): no.
(1 ms) yes
| ?- ask(silly).
Question: silly? (yes or no): dunno.
Invalid Input!!!
no
| ?- yes(man).
yes
| ?- no(man).
no
| ?- yes(woman).
no
| ?- no(woman).
(1 ms) yes