如何更改下面的代码,以便当“ BYE”连续三遍全部大写时,退出代码?(计数器重置为0
其他)。该代码应该以任何大写字母开头,因此BYE必须排除在该规则之外。
puts "say something to grandma"
number = rand(1900..2015)
while true
talking = gets.chomp
talking.downcase
puts "HUH?! SPEAK UP, SONNY!"
if talking == talking.upcase
puts "NO, NOT SINCE #{number + (1)}!"
break
end
end
您几乎描述了问题中的解决方案:添加一个条件来检查用户是否输入了BYE
。如果是这样,则将其添加到计数器中。如果计数器是3,break
; 否则,请使用循环到循环的顶部next
。如果未输入BYE
,则将计数器重置为0。
puts "say something to grandma"
number = rand(1900..2015)
counter = 0
while true
talking = gets.chomp
puts "HUH?! SPEAK UP, SONNY!"
if talking == "BYE"
counter += 1
puts "You said 'BYE' #{counter} time(s)"
break if counter >= 3
next
end
counter = 0
if talking == talking.upcase
puts "NO, NOT SINCE #{number + 1}!"
break
end
end
一些注意事项:
您会注意到我已删除talking.downcase
。它什么也没做。我怀疑您打算使用downcase!
,它会修改字符串(而downcase
返回一个新字符串,您不对其进行任何操作),但是那样会破坏代码(因为条件永远不会成立)。
代替while true
,loop do
在Ruby中更惯用了。
您可能想测试用户是否输入了什么,因为"" == "".upcase
是true
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句