2013-08-04 3 views
0

Я новичок в Ruby и пытаюсь сделать программу для моего 5-летнего сына. Я хочу спросить его, как записать слово в его списке орфографии (лично, а не на экране), и он вводит его в Ruby, и, если ответ правильный, то он ставит «Хорошо!». и снова запускается. Если он неверен, он ставит «Попробовать еще раз!» и снова запускается.Как написать цикл вокруг моих тестов «if»?

Вот что я придумал одно слово:

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

Мои вопросы:

  1. Как я могу получить его повторно запустить? Правильно или неправильно, мне нужно настроить цикл? Если да, то какой самый простой способ заставить его вернуться к началу, чтобы он мог ответить без повторного запуска. Очевидно, что не ставится end, но я получаю сообщение «неожиданный конец $, ожидающий kEND».
  2. Если я хочу добавить больше слов, что это лучший способ?

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

ответ

0

Вы должны смотреть на время цикла рубина. http://www.ruby-doc.org/docs/Tutorial/part_02/while.html

+0

Благодаря Hrishi, я знаю немного о петлях, так что я предполагаю, что я поставил петлю до и после «программы» я написал? –

+0

да. это в основном «код», а true <операторы, которые должны быть повторены. go here> end 'code' – Hrishi

2

Для легкого обновления, я бы рекомендовал поставить правильные слова в массиве:

words = %w{disappointed knowledge} 

Вы можете поместить слова на отдельных строках, тоже, если у вас есть много слов.

Вы можете проверить, если введенное слово в списке:

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

Обратите внимание, что я использовал else, а не elsif - else охватывает все возможные другие условия, что то, что вы хотите. elsif тоже работает, но зачем повторять условие, когда это не нужно?

Что касается делают это несколько раз, используйте loop:

loop do 
    # ... 
end 
+0

Спасибо, это здорово! Можете ли вы посоветовать, почему это не сработало? слова =% W {разочаровалась знания} петли сделать ставит "Как пишется ..." слова = gets.chomp если words.include? заклинание ставит «Хорошо сделано!» еще puts 'Попробуйте еще раз!' end –

+0

@Jason: У вас есть 'end' для' if', но не 'end' для' loop'. – icktoofay

Смежные вопросы