def average_of_three(num1, num2, num3)
puts "Enter first number"
num1= gets.to_i
puts "Enter second number"
num2 = gets.to_i
puts "Enter third number"
num3 = gets.to_i
avg=0
avg = (num1 +num2 + num3 )/3
puts "your average is#{avg}"
end
答案 0 :(得分:0)
如果您调用该方法,则此代码应该可以工作,但是该方法不需要参数。这些变量无论如何都在本地声明。
现在您将要做:
average_of_three(0, 0, 0)
初始值无关紧要,因为无论如何您都忽略它们。它们可以是:zero
或"Who cares!"
一样。
虽然这不是Ruby代码。在编写Ruby时,首先要考虑数据结构。
例如,获取三个值:
def get_n(n = 3)
n.times.map do |i|
print "Enter number #{i+1}: "
gets.to_i
end
end
这会问一系列问题,并将结果存储在数组中,map
就是这样做的。
现在您可以将这些平均:
def average(values)
return unless (values.any?)
values.sum / values.length
end
这有一个 guard子句,除非有至少一个值,否则它不会执行。然后调用sum
,这毫不奇怪地将所有值相加。用长度除以就可以了。
因此,您可以将所有这些与:
values = get_n
puts "Average is: #{average(values)}"
注意:在Ruby中,当您将整数除以整数时,总会得到一个整数。这意味着值会四舍五入。如果您希望得到分数结果,可以将输入转换器从.to_i
切换到.to_f
。这种更改将导致浮点数在其余的代码中流动。