If statement 如何在Prolog中编写IF-ELSE条件

If statement 如何在Prolog中编写IF-ELSE条件,if-statement,prolog,If Statement,Prolog,我是一个C#guy,对prolog非常陌生。我需要为下面的场景编写一个prolog程序。请任何人帮助实现这一目标 两个人共用一个抽屉。柜子有4个抽屉,抽屉1和2属于人1,抽屉3和4属于人2 他们把手机、钱包和书放在抽屉里。第二个人把手机丢在抽屉里了。他在属于他的第三和第四抽屉登记,但找不到他的电话。然后他检查了1号和2号抽屉,在2号抽屉里找到了它。我需要为这个场景编写prolog代码 person(person1). person(person2). drawers(drawer1). dra

我是一个C#guy,对prolog非常陌生。我需要为下面的场景编写一个prolog程序。请任何人帮助实现这一目标

两个人共用一个抽屉。柜子有4个抽屉,抽屉1和2属于人1,抽屉3和4属于人2

他们把手机、钱包和书放在抽屉里。第二个人把手机丢在抽屉里了。他在属于他的第三和第四抽屉登记,但找不到他的电话。然后他检查了1号和2号抽屉,在2号抽屉里找到了它。我需要为这个场景编写prolog代码

person(person1).
person(person2).

drawers(drawer1).
drawers(drawer2).
drawers(drawer3).
drawers(drawer4).

belongs_to(drawer1, person1).
belongs_to(drawer2, person1).
belongs_to(drawer3, person2).
belongs_to(drawer4, person2).

item(phone2).

phone_in(drawer).
phone_in(drawer2).
要运行的命令及其结果

?- phone_in(drawer4).
false.

?- phone_in(drawer3).
false.

?- phone_in(drawer1).
false.

?- phone_in(drawer2).
true.
我正在尝试编写一个条件,如下所示。

?- phone_in(drawer2).
true.
希望根据上述查询的结果运行条件(真/假)

请建议我改进代码。

语法如下

( condition -> then_clause ; else_clause )
它可能是这样写的

( phone_in(drawer2) =:= true ->  
  write('phone found in your search area'),
  fail
  ; phone_in(drawer2) =\= false -> 
  ; write('phone not found!'),nl
)

查看如何在Prolog.replicate of中编写if-then-else?如果希望获得有关工作代码的反馈,请尝试在上发布问题。查看如果手机在抽屉4中,为什么要声明找不到它?看来你的逻辑需要先更新一下。
( phone_in(drawer2) =:= true ->  
  write('phone found in your search area'),
  fail
  ; phone_in(drawer2) =\= false -> 
  ; write('phone not found!'),nl
)