Ruby if块逻辑返回意外结果

-4 ruby if-statement

我正在进行一个Ruby练习,取一个数字并返回相同的单词.下面是我正在处理的带有if语句的函数的代码.我提出了不同的字符串来帮助我追踪我的错误.

前三个条件似乎按照我的意图运作.然而,尽管它不符合我传递的数字的条件,但是返回'put the teens translator works'的条件在某种程度上是正确的.

我已经包含了一些我去过的数字来说明我的意思.我的意图是,如果数字大于13但小于20,不能被10整除,而不是11,12,13或15,则条件为真.如果我以41传递,例如,似乎条件是是的,因为"青少年翻译工作"打印.我觉得我错过了一些简单的事情.

在此先感谢您的帮助!

def in_english
    if @number == 11 || @number == 12 || @number == 13 || @number == 15
        puts "The number is 11, 12, 13 or 15"
    elsif (@number >0 && @number < 10)
        puts "Hello I made it hear"
    elsif (@number >= 10 && @number < 100 && @number%10 == 0)
        puts "The number is greater than equal 10 & < 100 and divisible by 10"
    elsif ((@number > 13 && @number < 20 ) && @number%10 != 0 && @number != 11 ||    @number != 12 || @number != 13 || @number != 15)
        puts "The teens translator works"
    elsif (@number > 20)
        puts "Over twenty_trans"
    else
        puts "End of if block"
    end
end

Say.new(47).in_english
Say.new(41).in_english
Say.new(52).in_english
Run Code Online (Sandbox Code Playgroud)

7st*_*tud 5

而不是这个:

if @number == 11 || @number == 12 || @number == 13 || @number == 15
Run Code Online (Sandbox Code Playgroud)

......你可以这样写:

if [11, 12, 13, 15].include? @number
Run Code Online (Sandbox Code Playgroud)

并且,而不是这个烂摊子:

elsif ((@number > 13 && @number < 20 ) && @number%10 != 0 && @number != 11 ||    @number != 12 || @number != 13 || @number != 15)
Run Code Online (Sandbox Code Playgroud)

......你可以这样写:

elsif [14, 16, 17, 18, 19].include? @number
Run Code Online (Sandbox Code Playgroud)

...或这个:

elsif @number == 14 or (16..19).include? @number
Run Code Online (Sandbox Code Playgroud)

我的意图是,如果数字大于13但小于20,则该条件为真,不能被10整除,

13到20之间的数字是否可被10整除?

  • `13到20之间的数字是否可以被10整除?` - 19 - 足够大的值19 ...... (2认同)