Ruby 我想不出我在哪里犯了错误
如果调用该方法,该代码应该可以工作,但该方法不需要参数。无论如何,这些变量都是在本地声明的 现在你要做的是:Ruby 我想不出我在哪里犯了错误,ruby,Ruby,如果调用该方法,该代码应该可以工作,但该方法不需要参数。无论如何,这些变量都是在本地声明的 现在你要做的是: 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
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
初始值并不重要,因为您忽略了它们。他们可能是:零或谁在乎!一模一样
不过,这不是很好的Ruby代码。在编写Ruby时,首先考虑数据结构
例如,要获取三个值:
average_of_three(0, 0, 0)
这会询问一系列问题,并将结果存储在一个数组中,这就是它的作用
现在,您可以平均这些:
def get_n(n = 3)
n.times.map do |i|
print "Enter number #{i+1}: "
gets.to_i
end
end
这有一个guard子句,除非至少有一个值,否则它不会执行。然后它调用,这毫不奇怪地将所有值相加。除以长度,就完成了
所以你要把这一切联系在一起:
def average(values)
return unless (values.any?)
values.sum / values.length
end
注意:在Ruby中,当你把一个整数除以一个整数时,你总是得到一个整数。这意味着这些值将四舍五入。如果您希望得到分数结果,可以将输入转换器从.to_i切换到.to_f。这一更改将导致浮动在代码的其余部分。有什么问题吗?现在,我更喜欢使用fdiv而不是在所有内容上都加上一个to_f。@SergioTulentsev怎么会这样?我想,看起来更干净、更能揭示意图。直接说我想从中得到一个浮动,而不是依赖于我们碰巧收到的任何类型的默认行为。
values = get_n
puts "Average is: #{average(values)}"