在 Prolog 中打印 List 的元素

mrw*_*rth 1 printing list prolog

我有一个列表 X,其中包含三个元素;ID、姓名和年级。全部取自用户输入

read_student_info([A, B, C]),
nl, nl, menu([[A, B, C] | X]).

read_student_info([A, B, C]) :-
  write('\tStudent ID: '),
  read(A),
  write('\tStudent Name: '),
  read(B),
  write('\tStudent Grade: '),
  read(C).
Run Code Online (Sandbox Code Playgroud)

现在,我想显示列表中的元素。因此,如果我有一个学生,其 ID = 3,姓名 = Tom,成绩 = 78。这就是我想要打印的内容。目前我一直在玩弄的功能是这样的:

show_records(X) :-
  X = [A | B],
  A = [C | D],
  id = write(C),
  name = format("~s", [B]),
  grade = write(D),
  show_records(B).
Run Code Online (Sandbox Code Playgroud)

然而,我将是第一个承认我几乎不知道自己在做什么的人。任何帮助将不胜感激!

Cap*_*liC 5

只是建议一种清理方法:

show_records([]).
show_records([A|B]) :-
  format('ID = ~w\tName = ~w\tGrade = ~w~n',A),
  show_records(B).
Run Code Online (Sandbox Code Playgroud)

测试:

?- show_records([[1,abel,10], [2,goofy,4]]).
ID = 1  Name = abel Grade = 10
ID = 2  Name = goofy    Grade = 4
Run Code Online (Sandbox Code Playgroud)

显然,选项卡不是最佳选择,但使用起来很简单