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

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)争论。 非常感谢你们!

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

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

你打过电话了

  is_even_and_divisible_by_5? 

代替

  is_even_and_divisible_by_five? 

还是is_even? function未定义。 我猜它的定义或者甚至没有定义的错误。 所以也许当你定义了is_even_and_divisible_by_five?(n)函数时,还有其他一些错误,而且它也没有定义。 另外我认为这是更简单的解决方案:

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

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

 a = 5 => 5 

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

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

甚至? 不是自己定义这里是您的方法的较短版本

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