重置循环计数器

大约11

如何更改下面的代码,以便当“ 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

一些注意事项:

  1. 您会注意到我已删除talking.downcase它什么也没做。我怀疑您打算使用downcase!,它会修改字符串(而downcase返回一个新字符串,您不对其进行任何操作),但是那样会破坏代码(因为条件永远不会成立)。

  2. 代替while trueloop do在Ruby中更惯用了。

  3. 您可能想测试用户是否输入了什么,因为"" == "".upcasetrue

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章