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