1

我试图让用户输入他们的生日,这样我就可以告诉他们他们的星座。但是,我无法获得他们的实际生日和月份。有人可以帮我吗?我尝试将读取分成不同的函子,但我不断收到错误。合并两个读取时出现的错误是“语法错误:运算符优先级冲突”。当我分开两个读取时得到的错误是“错误:=:=/2:参数没有充分实例化。”

当我结合阅读时的代码:

start :-
   read_month,

read_month :-
   write('Enter your birth month (month followed by a .): '),
   nl,
   read(X),
   write('Enter your day of birth (followed by a .): '),
   nl,
   read(Y),
   horoscope(X,Y).

当我分开读取时的代码:

start :-
   read_month,
   read_day.

read_month :-
   write('Enter your birth month (month followed by a .): '),
   nl,
   read(X).

read_day :-
   write('Enter your day of birth (followed by a .): '),
   nl,
   read(Y),
   horoscope(X,Y).
4

1 回答 1

3

作为初学者,不要这样开始。(并且您的第一个程序在语法上不正确;第一条规则不以句点结尾)。

相反,编写一个month_day_sign/3可以直接在顶层使用的关系,如下所示:

?- month_day_sign(7,24,Sign).
Sign = leo.

这就是您通常与 Prolog 交互的方式。因此,您正在利用顶层 shell 的功能。

一旦你掌握了这一点,你就可以制作一些额外的界面。但不要走另一条路!


通过分离两个“动作”,X现在与horoscope(X,Y)...断开连接

于 2014-11-24T23:27:31.933 回答