如何围绕我的“if”测试编写循环?

时间:2013-08-04 07:09:08

标签: ruby

我是Ruby的新手,正在尝试为我5岁的儿子制作一个程序。我想问他如何在拼写列表中拼写一个单词(亲自,而不是在屏幕上),然后将其输入Ruby中,如果答案是正确的话,那么就说“做得好!”并重新运行。如果它不正确,那么它会'再试一次'!并重新运行。

以下是我提出的一个词:

puts 'How do you spell?..'
spell = gets.chomp
if spell =='disappointed' 
puts 'Well Done!'
elsif spell != 'disappointed'
 puts 'try again!'
end

我的问题是:

  1. 如何让它重新运行?无论是对还是错,我是否需要设置循环?如果是这样,最简单的方法是让它回到起点,以便他可以在不重新运行的情况下回答。显然不会把end作为一个开始,但我收到一条消息'意外的$ end,期待kEND'。
  2. 如果我想添加更多单词,最好的方法是什么?

    if spell =='disappointed' || 'knowledge'  (etc)
    puts 'Well Done!'  
    elsif spell != 'disappointed'|| 'knowledge'   (etc)
      puts 'try again!'
    end
    

2 个答案:

答案 0 :(得分:2)

为了便于更新,我建议将正确的单词放在数组中:

words = %w{disappointed knowledge}

如果你有很多单词,你也可以把单词放在不同的行上。

然后,您可以检查输入的单词是否在列表中:

if words.include? spell
    # ...
else
    # ...
end

请注意,我使用else而不是elsif - else涵盖了所有其他可能的条件,这就是您想要的。 elsif也有效,但为什么在没有必要的情况下重复一次?

至于多次这样做,请使用loop

loop do
    # ...
end

答案 1 :(得分:0)

你应该看一下ruby中的while循环。 http://www.ruby-doc.org/docs/Tutorial/part_02/while.html