Ei pessoal, preciso fazer um programa que simula um coinflip e dá cara ou número. Eu fiz isso
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
mas como posso incluir toda vez que você pressiona enter deve continuar e continuar simulando o coinflip como ... HEAD (enter) HEAD (enter) NUMBER (enter) e assim por diante.
Respostas:
1 para resposta № 1Você precisa de algum tipo de laço, não apenas um if
. Esta é uma maneira resumida de fazer isso:
loop do
puts ["HEAD", "NUMBER"].sample
break if gets != "n"
end
Ou se não houver problema em parar pressionando CTRL-C:
loop do
puts ["HEAD", "NUMBER"].sample
gets
end
Usando um teste pós-loop (ou seja, faça o gets
e possivelmente break
depois de imprimir o resultado da inversão) é mais apropriado aqui, pois evita a duplicação de código. Veja também este popular guia de estilo Ruby:
https://github.com/bbatsov/ruby-style-guide#loop-with-break
https://github.com/bbatsov/ruby-style-guide#infinite-loop