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 № 1Hai 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