使用for循环将数字加在一起

时间:2015-05-13 21:32:03

标签: ruby for-loop numbers

如果我随机输入两个数字(第一个数字较小),我如何使用for-loop添加和之间的所有数字?

例如: 第一个数字:3

第二个数字:5

计算机应该给出答案' 12'

如何使用for-loop做到这一点?

7 个答案:

答案 0 :(得分:3)

在Ruby中,我们很少使用for循环,因为它会留下垃圾。相反,您可以使用inject

非常简单地执行您想要的操作
(3..5).inject(:+) # => 12

这是使用一些更深层的Ruby魔法(:+),它是+方法的符号,并传递给inject。它是如何工作的是一个不同的问题,是你以后需要学习的东西。

不要坚持使用您用其他语言学习的特定结构用语言做某事。这通常会强制使用非惯用代码,并且会阻止您学习如何使用该语言,因为该语言的其他程序员会这样做。这会造成维护问题,并使您在工作场所不那么受欢迎。

答案 1 :(得分:2)

在您定义的范围内循环简单:

puts "Enter first number: "
first = gets.to_i
puts "Enter second number: "
second = gets.to_i

total = 0
for i in (first..second) do
  total += i
end

puts total

请注意,如果您没有输入有效数字,它将转换为0.此外,这还假设第二个数字大于第一个数字。

答案 2 :(得分:2)

在Rails中,或者在带有ActiveSupport的普通Ruby中,你可以做一些比for循环更简单的事情,或者比其他人写的更简单。

(first_num..second_num).sum

这是Ruby中总结的简写:

sum = 0
(first_num..second_num).each { |num| sum += num }

答案 3 :(得分:2)

first, second = [3,5]
for x in (0..0) do
  p (first + second)*(second - first + 1) / 2
end

答案 4 :(得分:1)

我知道你说for循环,但为什么不使用Ruby给你的东西?

> a = 3
> b = 5
> a.upto(b).inject(0) {|m,o| m += o}
=> 12

如果你坚持for循环......

> m = 0
=> 0
> for i in 3..5
*   m += i
* end
=> 3..5
> m
=> 12

答案 5 :(得分:1)

从Ruby 2.4开始,你直接在Enumerable上调用SELECT CAST( CASE WHEN EXISTS( SELECT 1 FROM Customers WHERE PostalCode%2 = 0 AND Country IN ('France', 'Germany') ) THEN 1 ELSE 0 END AS BIT)

例如sum

答案 6 :(得分:0)

在Ruby中,很少见到block in <top (required)>' from C:/Program Files (x86)/Heroku/ruby-1.9.3/lib/ruby/gems/1.9.1/gems/test-kitchen-1.4.0/lib/kitchen/errors.rb:154:in循环。在这种情况下,更惯用的方法是upto

<top (required)>'
        from C:/Program Files (x86)/Heroku/ruby-1.9.3/bin/kitchen:23:in

另一种方法是使用reduce

for

......可以缩短到这个:

x = 3
y = 5
total = 0

x.upto(y) do |n|
  total += n
end

puts total
# => 12