【发布时间】:2014-12-24 04:33:59
【问题描述】:
我正在尝试编写一个以 user_input 的数字结尾的循环 fizzbuzz 代码。到目前为止,代码有效,但它循环了您为 user_input 输入的次数,而不是在 user_input 的限制处结束。比如我输入 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
【问题讨论】:
-
当您只需要一个时,您正在使用两个循环。删除
step循环,并将所有对i的引用替换为counter。这应该让您更接近解决方案的step(呵呵)。 (检查你的<;另外,请注意user_input >= 25是两次无用的,因为它不被任何东西使用,而且即使你写的是elsif而不是else,在评估时它总是正确的。)或者(更好),使用范围做所有事情并删除while。 -
不喜欢 while 语句,我会使用 1.upto(user_input) 并在其中实现一个案例