Хей, момчета, трябва да направя програма, която симулира coinflip и да издам глава или номер
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
но как мога да включа всеки път, когато натиснете enter, трябва да продължи и да продължи да симулира coinflip като ... HEAD (въведете) HEAD (въведете) НОМЕР (въведете) и т.н.
Отговори:
1 за отговор № 1Нуждаете се от някакъв вид контур, а не само an if
. Ето кратък начин да го направите:
loop do
puts ["HEAD", "NUMBER"].sample
break if gets != "n"
end
Или ако се справите със спирането, като натиснете CTRL-C:
loop do
puts ["HEAD", "NUMBER"].sample
gets
end
Използвайки тест след цикъл (т.е. направете gets
и евентуално break
след отпечатването на резултата от обръщането) е по-подходящо тук, тъй като избягва дублирането на кода. Вижте и това популярно ръководство за стил Ruby:
https://github.com/bbatsov/ruby-style-guide#loop-with-break
https://github.com/bbatsov/ruby-style-guide#infinite-loop