尝试用Ruby成对编写一个简单的倒计时循环
此说明如下所示: 数字运算器 编写一个将数字作为参数的方法 如果数字大于20 从数字倒数2秒 如果数字小于20 从数字倒数1 当数字倒计时到0时显示数字 我写了这篇文章,但它没有做它应该做的。有什么帮助吗尝试用Ruby成对编写一个简单的倒计时循环,ruby,Ruby,此说明如下所示: 数字运算器 编写一个将数字作为参数的方法 如果数字大于20 从数字倒数2秒 如果数字小于20 从数字倒数1 当数字倒计时到0时显示数字 我写了这篇文章,但它没有做它应该做的。有什么帮助吗 def num_cruncher(num) count = num until count == 0 do if num > 20 puts count - 2 else puts "#{count}" end
def num_cruncher(num)
count = num
until count == 0 do
if num > 20
puts count - 2
else
puts "#{count}"
end
count -= 1
end
end
你可以在这里用。大概是这样的:
def num_cruncher n
s = n > 20 ? -2 : -1
n.step(by: s, to: 0).entries
end
num_cruncher 23
#=> [23, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1]
你可以在这里用。大概是这样的:
def num_cruncher n
s = n > 20 ? -2 : -1
n.step(by: s, to: 0).entries
end
num_cruncher 23
#=> [23, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1]
这是您的代码,只需进行尽可能少的更改:
def num_cruncher(num)
count = num
until count < 0 do
puts count
if num > 20
count -= 2
else
count -= 1
end
end
end
num_cruncher(10)
# 10
# 9
# 8
# 7
# 6
# 5
# 4
# 3
# 2
# 1
# 0
num_cruncher(21)
# 21
# 19
# 17
# 15
# 13
# 11
# 9
# 7
# 5
# 3
# 1
def num_cruncher(num)
计数=num
直到计数<0为止
计算
如果num>20
计数-=2
其他的
计数-=1
结束
结束
结束
num_cruncher(10)
# 10
# 9
# 8
# 7
# 6
# 5
# 4
# 3
# 2
# 1
# 0
num_cruncher(21)
# 21
# 19
# 17
# 15
# 13
# 11
# 9
# 7
# 5
# 3
# 1
通过在循环外部提取if语句,代码会变得更短:
def num_cruncher(num)
if num > 20
step = 2
else
step = 1
end
until num < 0 do
puts num
num -= step
end
end
def num_cruncher(num)
如果num>20
步骤=2
其他的
步骤=1
结束
直到num<0
放置num
num-=步长
结束
结束
这是您的代码,更改越少越好:
def num_cruncher(num)
count = num
until count < 0 do
puts count
if num > 20
count -= 2
else
count -= 1
end
end
end
num_cruncher(10)
# 10
# 9
# 8
# 7
# 6
# 5
# 4
# 3
# 2
# 1
# 0
num_cruncher(21)
# 21
# 19
# 17
# 15
# 13
# 11
# 9
# 7
# 5
# 3
# 1
def num_cruncher(num)
计数=num
直到计数<0为止
计算
如果num>20
计数-=2
其他的
计数-=1
结束
结束
结束
num_cruncher(10)
# 10
# 9
# 8
# 7
# 6
# 5
# 4
# 3
# 2
# 1
# 0
num_cruncher(21)
# 21
# 19
# 17
# 15
# 13
# 11
# 9
# 7
# 5
# 3
# 1
通过在循环外部提取if语句,代码会变得更短:
def num_cruncher(num)
if num > 20
step = 2
else
step = 1
end
until num < 0 do
puts num
num -= step
end
end
def num_cruncher(num)
如果num>20
步骤=2
其他的
步骤=1
结束
直到num<0
放置num
num-=步长
结束
结束
在这里,您总是只按1倒计时<代码>计数-2不会更改计数
。每次通过循环执行count-=1
,与count
的值无关。您的逻辑应该(1)检查count
的值,并根据您想要的规则将其递减,然后(2)打印count
的当前值。当num正好为20时会发生什么?在这里您总是只按1倒计时<代码>计数-2不会更改计数
。每次通过循环执行count-=1
,与count
的值无关。你的逻辑应该(1)检查count
的值并根据你想要的规则将其递减,然后(2)打印count
的当前值。当num正好为20时会发生什么?EricDuminil好主意,刚刚重构了我的代码(我想这就是你的意思)。更详细,但可能更清楚:n.step(by:-2,to:0)。条目
。读者:与相同(相同的C代码)。@CarySwoveland好主意,用你的建议修改了我的答案。@EricDumini好主意,刚刚重构了我的代码(我想这就是你的意思)。更详细,但可能更清楚:n.step(by:-2,to:0)。条目
。读者:相同(相同的C代码)好主意,我已经用你的建议修改了我的答案。