簡體   English   中英

Prolog中的此錯誤是什么意思?

[英]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).
  • Prolog似乎不喜歡á字符。
  • 您應該使用單引號'而不是'字符。
  • 它是writeread ,而不是WriteRead

嘗試這個:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM