Ruby函数检查一个数字是否可被5整除并且是偶数

时间:2015-04-14 14:41:27

标签: ruby

def is_even?(n)
  remainder_when_divided_by_2 = n % 2

  if remainder_when_divided_by_2 == 0
    return true
  else
    return false
  end
end

def is_odd?(n)
  return ! is_even?(n)
end

puts "1 is_even? #{is_even?(1)} - is_odd? #{is_odd?(1)}"
puts "2 is_even? #{is_even?(2)} - is_odd? #{is_odd?(2)}"
puts "3 is_even? #{is_even?(3)} - is_odd? #{is_odd?(3)}"
puts "4 is_even? #{is_even?(4)} - is_odd? #{is_odd?(4)}"
puts "5 is_even? #{is_even?(5)} - is_odd? #{is_odd?(5)}"
puts "6 is_even? #{is_even?(6)} - is_odd? #{is_odd?(6)}"

def is_even_and_divisible_by_five?(n)
  remainder_when_divided_by_five = n % 5

  if (remainder_when_divided_by_five == 0) && (is_even?(n) == true)
    return true
  else
    return false
  end

end

puts "5 is_even_and_divisible_by_five? #{is_even_and_divisible_by_five?(5)}"
puts "10 is_even_and_divisible_by_five? #{is_even_and_divisible_by_five?(10)}"
puts "15 is_even_and_divisible_by_five? #{is_even_and_divisible_by_five?(15)}"
puts "20 is_even_and_divisible_by_five? #{is_even_and_divisible_by_five?(20)}"
puts "25 is_even_and_divisible_by_five? #{is_even_and_divisible_by_five?(25)}"
puts "30 is_even_and_divisible_by_five? #{is_even_and_divisible_by_five?(30)}"

问题是我没有在代码底部的puts命令中调用方法is_even_and_divisible_by_five。我称之为is_even_and_divisble_by_5。然后在is_even_and_divisble_by_five方法的if语句中,我离开了Is_even的(n)争论。非常感谢你们!

4 个答案:

答案 0 :(得分:6)

偶数(可被2整除)并被5整除也意味着“可被10整除”:

def is_even_and_divisible_by_five?(n)
  n % 10 == 0
end

答案 1 :(得分:5)

您致电

 is_even_and_divisible_by_5?

而不是

 is_even_and_divisible_by_five?

还是is_even?功能未定义。我猜它有一些错误,它的定义或甚至没有定义。因此,当您定义is_even_and_divisible_by_five?(n)函数时,可能还存在其他一些错误,而且它也没有定义。另外我认为这是更容易的解决方案:

def is_even_and_divisible_by_five?(n)
  n % 5 == 0 && n.even?
end

在Ruby中你不必一直使用返回。你应该很少使用它。原因是ruby函数默认返回最后一个计算值。而且几乎所有东西都在ruby,甚至块和If-Else语句中返回值。如果您打开irb控制台并尝试执行某些代码,例如:

a = 5
=> 5

第二行是第一行返回的。您可以使用自己喜欢的任何类型的条件进行这样的实验。

答案 2 :(得分:3)

您的方法名称为is_even_and_divisible_by_five?,而不是is_even_and_divisible_by_5?

答案 3 :(得分:2)

is_even?不是由它自己定义的 这是方法的较短版本

def is_even_and_divisible_by_five? n
  0 == n % 5 + n % 2 
end