gpt4 book ai didi

scheme - 让错误并为方案过程返回/打印 "string"

转载 作者:太空宇宙 更新时间:2023-11-03 18:56:19 25 4
gpt4 key购买 nike

我的函数检查简单的值并且应该根据结果输出/返回。我有两个问题:1. 当我用表达式 (randint (-5 10)) 替换 runner 的 let 值 (-1) 时,其中 randint 是另一个返回随机数的过程在 -5 到 10 之间,它不起作用

  1. 如果前两个 if 语句为真,我想返回/打印一个字符串,不知道如何在方案中执行此操作。

代码如下:

(define (check)
(let (runner(randint -5 10)
(cond ((and (< runner 1) (> runner -3))
(display "yes"))
((and (< runner -2) (> runner -6))
(display "no"))
((> runner 0)
(display runner))))))

这里是 randint 的代码:

(define random
(let ((a 69069) (c 1) (m (expt 2 32)) (seed 19380110))
(lambda new-seed
(if (pair? new-seed)
(set! seed (car new-seed))
(set! seed (modulo (+ (* seed a) c) m)))
(/ seed m))))

(define (randint . args)
(cond ((= (length args) 1)
(floor (* (random) (car args))))
((= (length args) 2)
(+ (car args) (floor (* (random) (- (cadr args) (car args))))))
(else (error 'randint "usage: (randint [lo] hi)"))))

最佳答案

除了@Rptx 指出的语法问题之外,您的代码中还有一个 fatal error :您不能在 Racket 中使用单臂 if(意思是:它们必须 有一个结果和一个选择)。您可以嵌套它们,或者更好:使用 cond,它非常适合测试多个条件。这应该有效:

(define (check)
(let ((runner (randint -5 10)))
(cond ((and (< runner 1) (> runner -3))
"yes")
((and (< runner -2) (> runner -6))
"no")
((> runner 0)
runner))))

像这样使用它:

(display (check))

关于 randint 的问题:既然您已经发布了代码,我可以确认问题出在您传递参数的方式上。如上图,这是正确的做法:

(randint -5 10)

关于scheme - 让错误并为方案过程返回/打印 "string",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26171202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com