다음 코드의 구문 오류는 무엇입니까? 오류가보고되고루프 및 조건이있는 Lisp 코드의 구문 오류
(defun getchoice3()
(let ((choice 1))
(format t "~%Enter a number (1-5): ")
(loop for choice = (or (parse-integer (prompt-read "Choice: ") :junk-allowed t) 0) do
while (and (> choice 0) (< choice 6))
(cond
((= choice 1) (print "1 chosen"))
((= choice 2) (print "2 chosen"))
((= choice 3) (print "3 chosen"))
((= choice 4) (print "4 chosen"))
((= choice 5) (print "5 chosen"))
(t (print "invalid entry, exiting."))))
choice))
은 매우 일반적입니다 :
코드가 '할'이 오류 메시지에보고되고 있지 않지만*** - LOOP: illegal syntax near
(COND ((= CHOICE 1) (PRINT "1 chosen")) ((= CHOICE 2) (PRINT "2 chosen")) ((= CHOICE 3) (PRINT "3 chosen"))
((= CHOICE 4) (PRINT "4 chosen")) ((= CHOICE 5) (PRINT "5 chosen")) (T (PRINT "0 chosen, exiting.")))
in
(LOOP FOR CHOICE = (OR (PARSE-INTEGER (PROMPT-READ "Choice: ") :JUNK-ALLOWED T) 0) WHILE (AND (> CHOICE 0) (< CHOICE 6))
(COND ((= CHOICE 1) (PRINT "1 chosen")) ((= CHOICE 2) (PRINT "2 chosen")) ((= CHOICE 3) (PRINT "3 chosen"))
((= CHOICE 4) (PRINT "4 chosen")) ((= CHOICE 5) (PRINT "5 chosen")) (T (PRINT "0 chosen, exiting."))))
.
코드를 들여 쓰고 서식을 올바르게 지정하는 것이 어떨까요?구문 오류를 찾기가 훨씬 쉬울 것입니다. –
그게 어떻게 될 수 있습니까? 두 번째 코드 행은 이미 들여 쓰기가되어 있지 않지만 이미 있어야합니다. 고쳐! –
변수 choice가있는 마지막 행은 정확하게 들여 쓰기 될 수 없습니다. 그것을 고쳐라. 그런 다음 LOOP의 구문을 고려할 때 DO가 잘못된 위치에있는 이유는 무엇이며 어디에 있어야할까요? –