在Ruby中测试重复的get.chomp输入
我在Ruby中工作,我试图测试用户的输入(变量在Ruby中测试重复的get.chomp输入,ruby,control-flow,Ruby,Control Flow,我在Ruby中工作,我试图测试用户的输入(变量kid)是否三次相同 我希望我的方法speak被无休止地调用,直到用户在被问到三个不同的问题时分别输入“BYE”三次 现在,如果用户只为一个问题输入“BYE”,终端和用户之间的整个对话就结束了 有没有办法让程序测试“再见”被说三次,并且只有一次说了三次,对话就结束了 kid = gets.chomp unless kid == "BYE" speak end 我不知道是有一个真正简单的解决方案,还是只有一个复杂的解决方案,但
kid
)是否三次相同
我希望我的方法speak
被无休止地调用,直到用户在被问到三个不同的问题时分别输入“BYE”三次
现在,如果用户只为一个问题输入“BYE”,终端和用户之间的整个对话就结束了
有没有办法让程序测试“再见”被说三次,并且只有一次说了三次,对话就结束了
kid = gets.chomp
unless kid == "BYE"
speak
end
我不知道是有一个真正简单的解决方案,还是只有一个复杂的解决方案,但任何答案都会有所帮助。我建议寻找一本关于“循环”和“控制流”的ruby教程 我想他们可能有你需要的东西 此示例也可能有帮助:
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
times=0#跟踪迭代
当次数反复小于10时,当此条件为真时
放入“你好!”#输出“你好!”
次数+=1#增加迭代次数
终止
您需要记录用户输入“再见”的次数。当该数字达到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
非“再见”回答时,代码重置为0
我发现一个
case
语句在处理不同的用户输入时非常方便,尤其是与正则表达式结合时。好吧,OP说对话结束,退出就结束:)但它是为了演示如何检查输入/保持状态。您可以将退出
替换为中断
,它将跳出while循环,从而结束对话。公平地说,更新的答案是使用中断退出while,而不是退出/世界停止。虽然了解循环和流控制很重要,但这并不能回答问题。你将如何将这一点应用到这个问题上?称之为试图引导他找到答案,而不仅仅是为他编写代码。这个问题所涉及的概念是在所有基本编程教程的开头介绍的,我觉得他能够找到一个并从中学习,而不是直接给他答案,这对他来说很重要。但这是一个答案网站。。。他们可以自己决定什么对他们来说是重要的。参见,其中解释了有时最好“不提供完整的代码示例”