Prolog中的条件语句

Prolog中的条件语句,prolog,Prolog,我刚刚启动了prolog,想知道我们是否也可以在prolog中实现像(if.else)这样的条件语句,如果可以,如何实现?? 有人能在Prolog中实现这段代码吗- if(a==2) print("A is 2"); if(a==3) print("A is 3"); else print("HAhahahahaah"); 好的,我在谢尔盖·戴姆琴科回答后做这个 Test(A) :-read(A), ( A =:= 2 -> write('A is 2') ;

我刚刚启动了prolog,想知道我们是否也可以在prolog中实现像(if.else)这样的条件语句,如果可以,如何实现?? 有人能在Prolog中实现这段代码吗-

if(a==2)
 print("A is 2");
if(a==3)
 print("A is 3");
else
 print("HAhahahahaah");
好的,我在谢尔盖·戴姆琴科回答后做这个

Test(A) :-read(A),
 ( A =:= 2 ->
    write('A is 2')
 ;
    ( A =:= 3 ->
        write('A is 3')
    ;
        write('HAhahahahaah')
    )
 ).
这是一个正确的答案,除了显示A=2,这也是我不想要的(如果我输入2)。

一种方法:

test(A) :-
    (   A =:= 2 ->
        write('A is 2')
    ;   A =:= 3 ->
        write('A is 3')
    ;   write('HAhahahahaah')
    ).
test(2) :-
    write('A is 2').
test(3) :-
    write('A is 3').
test(A) :-
    A \= 2, A \= 3,
    write('HAhahahahaah').
另一种方法是:

test(A) :-
    (   A =:= 2 ->
        write('A is 2')
    ;   A =:= 3 ->
        write('A is 3')
    ;   write('HAhahahahaah')
    ).
test(2) :-
    write('A is 2').
test(3) :-
    write('A is 3').
test(A) :-
    A \= 2, A \= 3,
    write('HAhahahahaah').

这两个代码有不同之处,比如选择点、A未实例化时的行为以及A是否被视为数字。但两者的工作方式相同(除了左边的选择点),并且与查询
test(2)。
test(3)。
test(42).

可能重复@david Sorry,但我很难理解它。您或其他人可以在实现此功能的地方发布一个代码吗。使用代码会更容易理解。我不会讲序言,但在您使用
read(Term)更新问题后,请查看。f(Term)==f(2):-write('helloworld!')。
我发现我的答案对你没有帮助。考虑阅读一些介绍性的Prolog文本,比如“学习Prolog现在!!”首先,我是从你建议的同一本书中读到的。你能帮我做一些输入吗?我想我错了。非常感谢,我发现了我的代码的问题。现在我在做什么。<代码>测试(a):-Read(a),(A=:= 2 ->写)('A是2');(A=:=3->write('A是3');write('hahahahaahahahahahahahahah')).但这也是A的最终打印值。例如,如果用户给出的3个输出是A is 3 A=3,我可以从输出中删除A=3吗???Sergey,在第一个解决方案中不需要额外的括号。第一级括号被认为是良好的编程风格。其他括号什么都不做,只会使解决方案混乱。我不需要请随意编辑Sergey的解决方案并删除不必要的括号。@PauloMoura我遵循ECLiPSe风格指南的建议“If then Else应始终被括号括起来。”我认为这样看嵌套结构要容易得多。嗨,Sergey。这条规则只指最外面的括号。不过,这条规则更一般:括号之间总是用分隔符括起来被认为是很好的样式(有助于避免代码中的错误)。