2013-04-26 76 views
1

我想在计划上为计划中的计数功能的变量分配一个分数。我希望函数返回一个分值的10如果计数大于或等于2的-10分如果计数小于2。这是我的代码有:为计划中的变量分配一个值

(define theScore (lambda (x) 
    (cond ((if = x 2) (if > x 2) 10) (else(- 10))))) 

它返回一个10的一切,即使是应该返回-10作为输出的测试。我无法弄清楚为什么,虽然我确定这是明显的事情!你能帮我指出我错过的东西吗?提前致谢。

回答

1

最有经验的计划程序员会写出像这样的功能:

(define (the-score x) 
    (if (< x 2) -10 10)) 

这里有一个版本,下面你所使用的样式:方案

(define theScore 
    (lambda (x) 
    (cond ((>= x 2) 10) 
      (else -1)))) 

标识符传统上写有破折号分开的话,不要使用驼峰。

+0

谢谢,这太棒了! – lameduck 2013-04-26 21:17:09

+0

不客气。如果你想看到更多这样的东西,你可以在http://programmingpraxis.com上享受我的博客。 – user448810 2013-04-26 23:01:18

2

下面是如何执行计划的比较:

(if <condition> 
    <something> 
    <else>) 

所以基本上它的语法的问题,仅此而已。换句话说,这是你的程序应该是什么样子:

(define theScore 
    (lambda (x) 
    (if (>= x 2) 
     10 
     -10))) 

注意,如果比较值等于或大于2更大由>=运营商的单一应用程序执行的,就像这样:(>= x 2)。现在,如果你想使用cond(你混淆这部分),这里是它是如何做:

(define theScore 
    (lambda (x) 
    (cond ((>= x 2) 10) 
      (else -10)))) 
+0

非常感谢! – lameduck 2013-04-26 21:17:51

+0

不客气,永远是我的荣幸! – 2013-04-26 21:58:16