0
我正在嘗試使用swi-prolog編寫一個程序,它隨機詢問人們的名字或姓氏,並根據他們輸入的內容打印「正確」或「不正確」。當前的正確答案是「你好」和「世界」,但不管用戶輸入什麼內容,輸出都是錯誤的,並且不會打印正確/不正確的答案。swi-prolog中的字符串比較程序總是失敗
start:-(Q=['What is your first name?','What is your last name?'],
random_member(N,[0,1]),
nth0(N,Q,X),
writeln(X)),
readln(S),
check_answer(N,S).
check_answer(N,S):-A=['Hello','World'],
nth0(N,A,X),
writeln(X),
([email protected]=X)->writeln('correct'),
not([email protected]=X)->writeln('incorrect').
我後來它編輯成:
start:-(Q=['What is your first name?','What is your last name?'],
random_member(N,[0,1]),
nth0(N,Q,X),
writeln(X)),
read(S),
check_answer(N,S).
check_answer(N,S):-A=['Hello','World'],
nth0(N,A,X),
writeln(X),
writeln(S),
(([email protected]=X))->writeln('correct') ; writeln('incorrect').
感謝。我已經做出了您建議的更改,並且在比較之前添加了Writeln(S)語句。無論我輸入什麼,它都會打印出_L143。你能解釋一下發生了什麼以及如何解決它?根據之前的編程經驗,我猜想_L143是存儲字符串的內存位置。是否有我應該做的解引用的序言版本? – 2013-04-04 05:30:39
_L143似乎意味着'未被證實的變量'。沒有細節就很難測試。你可以編輯你的問題,添加最新的代碼? – CapelliC 2013-04-04 05:58:14
主啊,主說:「成就了。」 – 2013-04-04 06:01:04