如何找到Scheme Racket中小写字母的数量?
我正在尝试查找字符串中的小写/大写字母数,但我的代码有一个问题:如何找到Scheme Racket中小写字母的数量?,scheme,racket,uppercase,lowercase,Scheme,Racket,Uppercase,Lowercase,我正在尝试查找字符串中的小写/大写字母数,但我的代码有一个问题: (define case (lambda (list) (if(char-lower-case? (car list)) (case (cdr list)) (+ 1 (case (cdr list))) ) )) (case (string->list "ScheMe")) 如何解决此问题?在函数中,您有两个问题: case是racket/scheme中预定
(define case
(lambda (list)
(if(char-lower-case? (car list))
(case (cdr list))
(+ 1 (case (cdr list)))
)
))
(case (string->list "ScheMe"))
如何解决此问题?在函数中,您有两个问题:
case
是racket/scheme中预定义的操作符list
,它是一个基本运算符,不应用作变量名
以下是一个工作函数:
(define (case1 lst)
(cond ((null? lst) 0)
((char-lower-case? (car lst)) (case1 (cdr lst)))
(else (+ 1 (case1 (cdr lst))))))
(case1 (string->list "ScheMe"))
您的代码缺少基本情况<代码>(case'())的计算结果应为
0
,但由于在nil
上执行car
和cdr
操作,因此会出现错误
其他可能出错的事情:
标题表示要计算小写字母的数量,但每个大写字母的数量都会增加
list
和case
是标准库中的名称。对于R5R,这意味着未定义的行为;对于R6R和更高版本,这意味着库绑定将不可用。在#中!racket
(我猜您使用这种语言是因为您标记了racket)它作为R6R工作。请指定代码的具体问题。如果字符串中的第一个字母是小写,则程序不返回(大小写(cdr列表))。我没有检查所有字符串。我解决了,解决方案是:(定义大小写(lambda(list)(if(null?list)0(if(char大写)(car list))(case(cdr list))(+1(case(cdr list)))))(case(string->list“SeheMe”))