我正在Prolog中制作一个程序来查找输入国家/地区的首都,我在第10行和第11行始终收到此错误:
错误:c:/ users / cesar downs / documents / capital.pl:10:语法错误:运算符预期 错误:c:/ users / cesar downs / documents / capital.pl:11:语法错误:运算符预期
我真的不明白,继承人的代码:
capital_of(guatemala, guatemala).
capital_of(tegucigalpa, honduras).
capital_of(san_salvador, el_salvador).
capital_of(managua, nicaragua).
capital_of(san_jose, costa_rica).
capital_of(panamá, panamá).
%Rules
Capital:- write(‘Enter the country: ‘),Read(Country),Answer(Country).
Answer(Country):- capital_of(Country,City),Write(‘The capital of: ‘),Write(Country),Write(‘ is ‘),Write(City).
答案 0 :(得分:3)
á
字符。'
而不是‘
字符。write
和read
,而不是Write
和Read
。试试这个:
capital_of(guatemala, guatemala).
capital_of(tegucigalpa, honduras).
capital_of(san_salvador, el_salvador).
capital_of(managua, nicaragua).
capital_of(san_jose, costa_rica).
capital_of(panama, panama).
%Rules
capital :-
write('Enter the country: '),
read(Country),
answer(Country).
answer(Country) :-
capital_of(Country,City),
write('The capital of: '),
write(Country),
write(' is '),
write(City).
试运行:
| ?- consult('test.pl').
compiling /home/aioobe/tmp/prolog/test.pl for byte code...
/home/aioobe/tmp/prolog/test.pl compiled, 20 lines read
yes
| ?- capital.
Enter the country: managua.
The capital of: managua is nicaragua
yes
| ?-
答案 1 :(得分:2)
嗯,这意味着你的第十和第十一行有错误,在你的文件c:/ users / cesar downs / documents / capital.pl中,对于这两行,错误是操作符丢失。
实际上在你的情况下,并不是缺少运算符是错误的,而是你用谓词命名你的谓词,而它是为Prolog中的变量保留的。这使翻译变得疯狂!
正确的版本是:
capital_of(guatemala, guatemala).
capital_of(tegucigalpa, honduras).
capital_of(san_salvador, el_salvador).
capital_of(managua, nicaragua).
capital_of(san_jose, costa_rica).
capital_of('panamá', 'panamá').
%Rules
capital :-
write('Enter the country: '),
read(Country),
answer(Country).
answer(Country) :-
capital_of(Country, City),
write('The capital of: '),
write(Country),
write(' is '),
write(City).
编辑:正如所指出的,还有其他问题,例如使用适当的单引号来分隔原子'
和使用特殊字符,而不是用á
替换a
你可以像我在我的代码中那样用单引号包装你的原子。
EDIT2:btw尝试正确缩进代码。如果你将所有谓词联系在一起,Prolog代码很难阅读。
答案 2 :(得分:2)
另外,还要考虑使用format / 2。例如,而不是:
answer(Country) :-
capital_of(Capital, Country),
write('The capital of: '),
write(Country),
write(' is '),
write(Capital).
你可以写:
answer(Country) :-
capital_of(Capital, Country),
format("The capital of: ~w is ~w", [Country,Capital]).