2012-03-01 46 views
2

我在Prolog上找出一個輸入國家的首都的BU,我在第10和11行上一直得到這個錯誤:Prolog中的這個錯誤是什麼意思?

錯誤:c:/ users/cesar downs/documents /capital.pl:10:Syntax error:Operator expected 錯誤:c:/ users/cesar下降/ 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). 

回答

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]). 
3
  • 序言似乎並不喜歡á字符。
  • 您應該使用單引號'而不是字符。
  • 它是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 
| ?- 
2

嗯,這意味着你必須在你的第十和第十一行的錯誤,在你的文件c:/用戶/塞薩爾斯/文件/ 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:順便說一句,嘗試正確縮進你的代碼。如果你使用所有的謂詞,Prolog代碼很難閱讀。