7 votes

Ruby Infinite Loop

Je suis en train d'apprendre ruby, et je suis bloqué sur ce problème :

Écrire un programme pour les grands-mères sourdes. Quoi que tu dises à ta grand-mère (quoi que tu tapes), elle devrait répondre par HUH ?! SPEAK UP, SONNY ! à moins que tu ne le cries (en majuscules). Si tu cries, elle t'entend et te répond : NON, PAS DEPUIS 1938 ! Pour que ton programme soit vraiment crédible, demande à ta grand-mère de crier une année différente à chaque fois, par exemple une année au hasard entre 1930 et 1950. Tu ne peux pas arrêter de parler à grand-mère avant d'avoir crié BYE.

Voici le code que j'ai essayé :

puts "Say something to Grandma!"
something = gets.chomp
while something != "BYE"
    if something == something.upcase
      puts "NO, NOT SINCE 19" + (rand(30..50)).to_s + "!"
    else
      puts "HUH? SPEAK UP SONNY!"
    end
end

Chaque fois que je l'exécute, les chaînes if et else tournent en boucle infinie. Qu'est-ce que je fais de mal ici ?

7voto

Will Richardson Points 5119

Vous ne recevez l'entrée qu'une seule fois, vous devez la lire au début de chaque boucle, comme ceci :

something=""
while something != "BYE"
    puts "Say something to Grandma!"
    something = gets.chomp
    if something == something.upcase
      puts "NO, NOT SINCE 19" + (rand(30..50)).to_s + "!"
    else
      puts "HUH? SPEAK UP SONNY!"
    end
end

J'espère que cela a du sens.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X