在 Prolog 中打印出 List 的元素
Printing out elements of List in 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).
现在,我想显示列表中的元素。因此,如果我有一个 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).
然而,我将是第一个承认我几乎不知道自己在做什么的人。任何帮助将不胜感激!
我已经弄明白了,至少是这样。这是我的修改。
show_records(X) :-
X = [A | B],
write('\tID = '),
A = [C | D],
write(C),
write('\tName = '),
D = [E | F],
format("~s", [E]),
write('\tGrade = '),
F = [G | H],
write(G),
nl,
show_records(B).
只是建议一种清理方法:
show_records([]).
show_records([A|B]) :-
format('ID = ~w\tName = ~w\tGrade = ~w~n',A),
show_records(B).
测试:
?- show_records([[1,abel,10], [2,goofy,4]]).
ID = 1 Name = abel Grade = 10
ID = 2 Name = goofy Grade = 4
显然,选项卡不是最佳选择,但易于使用
我有一个列表 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).
现在,我想显示列表中的元素。因此,如果我有一个 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).
然而,我将是第一个承认我几乎不知道自己在做什么的人。任何帮助将不胜感激!
我已经弄明白了,至少是这样。这是我的修改。
show_records(X) :-
X = [A | B],
write('\tID = '),
A = [C | D],
write(C),
write('\tName = '),
D = [E | F],
format("~s", [E]),
write('\tGrade = '),
F = [G | H],
write(G),
nl,
show_records(B).
只是建议一种清理方法:
show_records([]).
show_records([A|B]) :-
format('ID = ~w\tName = ~w\tGrade = ~w~n',A),
show_records(B).
测试:
?- show_records([[1,abel,10], [2,goofy,4]]).
ID = 1 Name = abel Grade = 10
ID = 2 Name = goofy Grade = 4
显然,选项卡不是最佳选择,但易于使用