[英]What does this error in Prolog mean?
我在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).
á
字符。 '
而不是'
字符。 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
| ?-
好吧,這意味着您在文件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代碼。
順便說一句,還要考慮使用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]).
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.