/ / Ruby simulazione coinflip (testa o numero) - ruby

Simulazione coinflip rubino (testa o numero) - rubino

Ehi ragazzi ho bisogno di fare un programma che simuli un coinflip e dia testa o numero

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

ma come posso includere ogni volta che premi Invio, dovrebbe continuare e continuare a simulare coinflip come ... HEAD (invio) HEAD (invio) NUMBER (invio) e così via.

risposte:

1 per risposta № 1

Hai bisogno di un qualche tipo di ciclo continuo, non solo un if. Ecco un modo breve per farlo:

loop do
puts ["HEAD", "NUMBER"].sample
break if gets != "n"
end

O se stai bene con l'arresto premendo CTRL-C:

loop do
puts ["HEAD", "NUMBER"].sample
gets
end

Usando un test post-loop (cioè, fai il gets e possibilmente break dopo stampare il risultato del capovolgimento) è più appropriato qui, poiché evita la duplicazione del codice. Vedi anche questa popolare guida di stile Ruby:
https://github.com/bbatsov/ruby-style-guide#loop-with-break
https://github.com/bbatsov/ruby-style-guide#infinite-loop