Ruby 这里的新员工总数和其他fizzbuzz问题

Ruby 这里的新员工总数和其他fizzbuzz问题,ruby,fizzbuzz,Ruby,Fizzbuzz,我试图写一个循环的fizzbuzz代码,以用户输入的数字结尾。到目前为止,代码仍然有效,但它会循环用户输入的次数,而不是以用户输入的限制结束。例如,如果我输入25,它将循环25次,而不是在25结束。如何设置参数/范围 这是我的密码: puts("Please select a number that is at least 25. This is the limit for the fizzbuzz game.") user_input = gets().chomp().to_i if u

我试图写一个循环的fizzbuzz代码,以用户输入的数字结尾。到目前为止,代码仍然有效,但它会循环用户输入的次数,而不是以用户输入的限制结束。例如,如果我输入25,它将循环25次,而不是在25结束。如何设置参数/范围

这是我的密码:

puts("Please select a number that is at least 25. This is the limit for the fizzbuzz game.")

user_input = gets().chomp().to_i 

if
user_input < 25 
    puts("Please select a larger number.")

else 
user_input >= 25 
    user_input = user_input

    counter = 1

    while counter < user_input 
        puts(counter)
        counter = counter + 1

    (1..user_input).step do |i|

            if i % 3 == 0 && i % 5 == 0
                puts("fizzbuzz")
            elsif i % 3 == 0 
                puts("fizz")
            elsif i % 5 == 0 
                puts("buzz")
            else
                puts(i) 
            end
        end
    end 
end 
put(“请选择一个至少为25的数字。这是fizzbuzz游戏的限制。”)
用户\u input=gets().chomp().to\u i
如果
用户输入<25
puts(“请选择一个较大的数字”)
其他的
用户输入>=25
用户输入=用户输入
计数器=1
而计数器<用户输入
放置(计数器)
计数器=计数器+1
(1.用户输入)。步骤do | i|
如果i%3==0&&i%5==0
puts(“嘶嘶声”)
如果i%3==0
puts(“嘶嘶声”)
如果i%5==0
出售(“嗡嗡声”)
其他的
第(i)项
结束
结束
结束
结束
  • 当您不向方法发送参数时,写入
    ()
    是可选的,通常不鼓励这样做
  • 您不应该使用
    else user\u input>=25
    else
    就足够了
  • user\u input=user\u input
    是完全无用的行
  • 虽然rubist的编码方式不是使用计数器循环,但更喜欢迭代器。此外,您根本不应该在这里使用
put'请选择一个至少为25的数字。这是fizzbuzz游戏的极限
用户输入=gets.chomp.to\u i
如果用户输入<25
放置“请选择一个较大的数字。”
其他的
1.最多(用户输入)do | i|
如果i%3==0&&i%5==0
放上“嘶嘶声”
如果i%3==0
放“嘶嘶”
如果i%5==0
“嗡嗡声”
其他的
把我
结束
结束
结束
或者,您可以使用
case when
代替多个
elsif
语句:

puts 'Please select a number that is at least 25. This is the limit for the fizzbuzz game.'
user_input = gets.chomp.to_i
if user_input < 25
  puts 'Please select a larger number.'
else
  1.upto(user_input) do |i|
    case
    when [3, 5].all? { |n| i % n == 0 }; puts 'fizzbuzz'
    when i % 3 == 0; puts 'fizz'
    when i % 5 == 0; puts 'buzz'
    else; puts i
    end
  end
end
put'请选择一个至少为25的数字。这是fizzbuzz游戏的极限
用户输入=gets.chomp.to\u i
如果用户输入<25
放置“请选择一个较大的数字。”
其他的
1.最多(用户输入)do | i|
案例
什么时候[3,5]。全部?{| n | i%n==0};放上“嘶嘶声”
当i%3==0时;放“嘶嘶”
当i%5==0时;“嗡嗡声”
其他的把我
结束
结束
结束

您使用的是两个循环,而您只需要一个循环。移除
步骤
循环,并将对
i
的所有引用替换为
计数器
。这将使您离解决方案更近一步。(检查你的
=25
是两倍无用的,因为它没有被任何东西使用,而且因为即使你写的是
elsif
而不是
else
,在计算时它也总是正确的。)或者(更好的是),用一个范围做所有事情,去掉
while
。我不喜欢while语句,我会使用1.upto(用户输入)并在其中执行一个案例