Hé les gars, j'ai besoin de faire un programme qui simule un coinflip et donne une tête ou un numéro.
a = rand(1..2)
if a == 1 then
puts "HEAD!"
else
puts "NUMBER!"
end
enter = gets
if enter == "n"
a = rand(1..2)
if a == 1 then
puts "HEAD!"
else
puts "NUMBER!"
end
end
mais comment puis-je inclure chaque fois que vous appuyez sur Entrée, cela devrait continuer et continuer à simuler Coinflip comme ... HEAD (entrez) HEAD (entrez) NUMBER (entrez) et ainsi de suite.
Réponses:
1 pour la réponse № 1Vous avez besoin d'une sorte de boucle, pas seulement un if
. Voici un petit moyen de le faire:
loop do
puts ["HEAD", "NUMBER"].sample
break if gets != "n"
end
Ou si vous êtes d'accord pour arrêter en appuyant sur CTRL-C:
loop do
puts ["HEAD", "NUMBER"].sample
gets
end
À l'aide d'un test post-boucle (c.-à-d. gets
et éventuellement break
après l'impression du résultat de retournement) est plus appropriée ici, car elle évite la duplication de code. Consultez également ce guide de style Ruby populaire:
https://github.com/bbatsov/ruby-style-guide#loop-with-break
https://github.com/bbatsov/ruby-style-guide#infinite-loop