gpt4 book ai didi

prolog - 显示请求事实的元素

转载 作者:行者123 更新时间:2023-12-01 07:45:29 26 4
gpt4 key购买 nike

我是 Prolog 的新手,我很难理解我做错了什么。我试图以一个关键字的形式获取用户输入,然后显示它是哪个类的完整详细信息。如果我以这种格式查询,我的代码将显示信息 course(managing, A, B, C, D, E) 但当我尝试简化它时将不起作用。

有人可以告诉我应该如何编辑我的代码,以便它会询问我想要哪门类(class)的信息,并且只需要一个单词的回答就可以显示与该类(class)相关的所有信息吗?

course(
accouting,
acc10707,
day(tuesday),
time(1100, 1250),
prof(ayesha, mujib),
b228
).
course(
managing,
mng10247,
day(thursday),
time(1000, 1150),
prof(brian, morris),
b228
).
course(
communication,
com00207,
day(monday),
time(1000, 1250),
prof(ali, bec),
b727
).

details :-
write('Please enter unit keyword.'),
nl,
read(Name),
course(Name,Code,Day,Time,Prof,Room),
write(Name,Code,Day,Time,Prof,Room).

最佳答案

使用您提供的代码,我得到以下关于 的错误版本 1.4.4:

| ?- details.
Please enter unit keyword.
communication.
uncaught exception: error(existence_error(procedure,write/6),details/0)

有什么问题?

  • 最后一个进球在 details/0write(Name,Code,Day,Time,Prof,Room) .

  • 您无意中尝试使用 write/<b>6</b> , 这是不存在的。

解决方案?

  1. 使用 而不是在 details/0 中执行副作用!

    让我们定义details_of/<b>2</b> .它的第一个参数是一个结构 c/6 .

    details_of(Details,Course_name) :-    Details = c(Course_name,Code,Day,Time,Prof,Room),    course(Course_name,Code,Day,Time,Prof,Room). 

    示例使用:

    | ?- details_of(X,communication).X = c(communication,com00207,day(monday),time(1000,1250),prof(ali,bec),b727)yes
  2. 快速修复:而不是 write/6使用 write/1和一个结构c/6 .

    替换write(Name,Code,Day,Time,Prof,Room)经过 write(c(Name,Code,Day,Time,Prof,Room)) .

    | ?- details.Please enter unit keyword.communication.c(communication,com00207,day(monday),time(1000,1250),prof(ali,bec),b727)yes

关于prolog - 显示请求事实的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33204261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com