【发布时间】:2020-10-08 19:19:00
【问题描述】:
我正在为我的 Ruby 课程编写一个淡化的二十一点游戏,我在实现我的 hit 或 stay 函数方法后挂断了电话。它没有启动它下面的while 语句。希望有人能告诉我语法是关闭还是缩进错误。
def prompt_user()
puts 'Would you like another card? Press y or n'
hit_stay = gets.chomp
while hit_stay == 'y' ||'n'
if hit_stay == 'y'
puts "Your cards are"
puts $cards.append(num())
puts "Your total card count is"
puts $cards.sum
return true
elsif hit_stay == 'n'
puts 'your total is'
puts $cards.sum
return true
else
puts ' This is not a valid option.'
return false
end
end
end
这似乎是程序有点古怪的地方。
prompt_user()
while prompt_user() == 'y' || 'n'
$cards.sum <= 15
prompt_user()
if prompt_user() == 'n'
puts 'Your final card count is.'
puts $cards.sum
end
if 15 < $cards.sum <21
puts 'Your final card count is.'
puts $cards.sum
elsif $cards.sum > 21
puts 'Game Over You Bust'
end
end
我对编写代码有点新,我知道我需要对其进行一些清理,但对此有点强调。
【问题讨论】:
-
请始终尝试使用您正在使用的编程语言标记您的问题。这样您就可以吸引更多相关人员来回答您的问题,并且不会打扰其他忽略了某些特定标签或不擅长您使用的技术的人。
-
对此感到抱歉。我会记下未来的!
-
==的 operator precedence 高于||。因此,while hit_stay == 'y' ||'n'等价于while (hit_stay == 'y') || 'n'。如果hit_stay #=> 'y'我们得到while true('n'不被检查)。如果hit_stay是任何其他值hit_stay == 'y' #=> false,则表达式简化为while 'n'。由于'n'是truthy(即既不是nil也不是false),这也等同于while true。因此,一个人永远不会跳出while循环。
标签: ruby methods while-loop