我制作了专家系统,但我有一些错误。它的作品询问用户一些问题,他们回答“是”或“否”(西班牙文中的'si','no')。问题是,当我验证答案时,程序返回“false”。 这里的代码有错误的部分:无法在PROLOG中验证输入
:- dynamic respondeSi/1.
:- dynamic respondeNo/1.
:- dynamic seriesSugeridas/2.
abrirBase :-
retractall(seriesSugeridas(_,_)),
retractall(respondeSi(_)),
retractall(respondeNo(_)),
consult('TP4.txt'). %modificar directorio
inicio:-
abrirBase, writeln('¡Bienvenido! Vamos a ver qué serie podemos recomendarte...'),
filtrar_series.
filtrar_series:-
preguntar_duracion(RtaDuracion),
preguntar_serie_terminada(RtaTermino),
preguntar_serie_nueva(RtaSerieNueva),
obtener_series(RtaDuracion, RtaTermino, RtaSerieNueva),
consultar_caracteristicas.
preguntar_duracion(RtaDuracion):-
write('¿Tenés bastante tiempo libre? Respuesta (si|no): '),
read(RtaDuracion), RtaDuracion \= si, RtaDuracion \= no,
writeln('Respuesta inválida, conteste nuevamente.'),
preguntar_duracion(RtaDuracion).
%%AFTER INPUTTING THE ANSWER ONCE MORE HERE,
IT RETURNS "false" AND ENDS THE PROGRAM
preguntar_serie_terminada(RtaTermino):-
write('¿Buscás una serie que aún no haya terminado? Respuesta (si|no): '),
read(RtaTermino), RtaTermino \= si, RtaTermino \= no,
writeln('Respuesta inválida, conteste nuevamente.'),
preguntar_serie_terminada(RtaTermino).
preguntar_serie_nueva(RtaSerieNueva):-
write('¿Buscás una serie nueva? Respuesta (si|no): '),
read(RtaSerieNueva), RtaSerieNueva \= si, RtaSerieNueva \= no,
writeln('Respuesta inválida, conteste nuevamente.'),
preguntar_serie_nueva(RtaSerieNueva).
它为什么会发生?谢谢
更新:它总是会返回false。我很确定,错误是RtaDuracion \ = si的输出。
你被允许谓语从句定义中使用换行符。在每个逗号后加上一个将有助于提高可读性。 – lurker