Racket:赌博模拟中的条件语句不匹配字符串相等性”

问题描述 投票:0回答:1

问题描述:

我正在 Racket 中进行简单的赌博模拟,但遇到了条件语句未正确匹配字符串相等性的问题。目标是当输入

bet
与随机选择的颜色
c
匹配时输出“W”。然而,即使输入匹配
c
,程序似乎总是输出“L”。

代码:

(define (ro)
  (define bet (string-trim (read-line)))
  (define n (+ (random 36) 1))
  (define c (list-ref '(red black) (random 2)))
  
  (display (string-append bet " " c " "))
  
  (cond
    [(equal? bet c) (display "W")]
    ; Uncomment the next line if further conditions are relevant
    ; [(equal? bet "1-18") (if (<= n 18) (display "W") (void))]
    ; Add more conditions as needed
    [else (display "L")]
  ))

(ro)

预期行为:

我希望当下注与颜色 c 匹配时程序输出“W”。此外,如果还有其他条件,请取消注释相应的行并相应地调整条件。

实际行为:

即使投注与 c 匹配,程序也始终输出“L”。我尝试了不同的输入值,但问题仍然存在。

补充说明:

我怀疑字符串比较或我处理输入的方式可能存在问题。任何有关可能导致此问题的原因以及如何解决该问题的见解将不胜感激。

谢谢!

scheme racket
1个回答
0
投票

c
是一个符号,
bet
是一个字符串。即使它们包含相同的文本,它们也永远不会相等。

c
更改为字符串。

  (define c (list-ref '("red" "black") (random 2)))
© www.soinside.com 2019 - 2024. All rights reserved.