测试 Ruby 中重复的 gets.chomp 输入

Test for repeated gets.chomp input in Ruby

我在 Ruby 工作,我正在尝试测试用户的输入(变量 kid)三次是否相同。

我希望我的方法 speak 被无休止地调用,直到用户在被问及三个单独的问题时分别输入 "BYE" 三次。

现在,如果用户输入 "BYE" 即使只是一个问题,终端和用户之间的整个对话也会结束。

有没有办法让"BYE"的程序测试被说三遍,只说三遍,就结束对话?

kid = gets.chomp    
unless kid == "BYE"  
    speak  
end

我不知道是否有真正简单的解决方案或只有复杂的解决方案,但任何答案都有帮助。

我建议寻找有关 "loops" 和 "control flow" 的 ruby 教程。

我想Ruby Primer lesson at rubymonk.com可能有你需要的东西。

这个例子也可能有帮助:

times = 0          # keep track of iterations
while times < 10   # repeatedly, while this condition is true
  puts "hello!"    # output "hello!"
  times += 1       # increase count of iterations
end

您需要跟踪用户输入的次数 "BYE"。当该数字达到 3 时,您退出:

 byecount = 0
 while kid = gets.chomp
 case kid     
  when "BYE"
    #increase the count of bye  
    byecount +=1
    puts byecount
    break if byecount == 3
  else
    #reset our count
    byecount = 0
    speak
  end
end

代码在非 "BYE" 答案时重置为 0。

我发现 case 语句在这种情况下处理不同的用户输入时非常方便,尤其是与正则表达式结合使用时。