我试图定义一个返回" fizz"当整数可被3整除时," buzz"什么时候可以被5整除?" fuzzbuzz"当数字可被两者整除时。我知道15可以被两者整除,但是我不知道我在代码中输错了什么。谢谢。
def fizzbuzz(int)
if int % 3 == 0
return "Fizz"
elsif int % 5 == 0
return "Buzz"
elsif int % 15 == 15
return "FizzBuzz"
else
end
end
答案 0 :(得分:3)
因此,对于条件,ruby按顺序评估if
,然后评估elsif
,最后评估else
。如果任何条件的计算结果为true,则忽略其余条件。
def fizzbuzz(int)
if int % 3 == 0
return "Fizz"
elsif int % 5 == 0
return "Buzz"
elsif int % 15 == 15
return "FizzBuzz"
else
end
end
因此,让我们根据您当前的代码查看一些示例。
说int = 3
我们转到if int % 3 == 0
,这是真的,因此代码返回“Fizz”,并且在评估之下没有任何内容。
说int = 5
,
int % 3 == 0
是假的,我们进入第一个elsif。
int % 5 == 0
是真的,我们返回“Buzz”
现在让我们来看看15,
int % 3 == 0
是正确的,因此代码将返回“Fizz”并忽略其他所有内容,即使在if语句之后有更多条件将被评估为真。
这里的顺序非常重要。您需要先检查int % 15 == 0
,然后转到% 3
和% 5
。