Ruby 带两个参数的Or和语法(| |&&;)

Ruby 带两个参数的Or和语法(| |&&;),ruby,Ruby,我写这段代码是为了检查一个数字是否是偶数,是否可以被7整除。目的是使用“&&”或“| |”。因为我想要偶数和可被7整除的数,所以它将是“&&”。这是我的代码 input = gets.to_i def divisible_by_seven?(input) div_by_seven = input % 7 is_even = is_even?(input) if div_by_seven == 0 && is_even == true

我写这段代码是为了检查一个数字是否是偶数,是否可以被7整除。目的是使用“&&”或“| |”。因为我想要偶数和可被7整除的数,所以它将是“&&”。这是我的代码

input = gets.to_i
def divisible_by_seven?(input)

    div_by_seven = input % 7
    is_even = is_even?(input)

    if div_by_seven == 0 && is_even == true 
        return "is divisible by 7 and is even"

    elsif div_by_seven == 0 && is_even == false
        return "is divisible by 7 but is not even"

    elsif div_by_seven != 0 && is_even == true
        return "is not divisible by 7 but is even"

    else
        return "is not divisible by 7 and is not even"
    end    
end

puts "#{input} #{is_even_and_divisible_by_seven?(input)}"
有没有更好的方法写这篇文章?

当然有

def is_even_and_divisible_by_seven?(input)
  case [(input % 7).zero?, input.even?]
  when [true, true] then "is divisible by 7 and is even"
  when [true, false] then "is divisible by 7 but is not even"
  when [false, true] then "is not divisible by 7 but is even"
  when [false, false] then "is not divisible by 7 and is not even"
end

input = gets.to_i
puts "#{input} #{is_even_and_divisible_by_seven?(input)}"


一个快速的改进是用
div\u by\u seven=input%7==0
替换
div\u by\u seven=input%7==0
。另外,用
是偶数
替换
是偶数
,或者用
替换
输入。偶数?
是偶数==false
!输入。偶数?

def divisible_by_seven_and_even?(input)
  div_by_seven = input % 7 == 0

  if div_by_seven && input.even?
    "is divisible by 7 and is even"
  elsif div_by_seven && !input.even?
    "is divisible by 7 but is not even"
  elsif !div_by_seven && input.even?
    "is not divisible by 7 but is even"
  else
    "is not divisible by 7 and is not even"
  end    
end

如果一个整数是偶数(除以2)并除以7,那么它就是除以14。

第8行的“可被5整除”应该是“可被7整除”?什么是“偶数”和“可被7整除”?什么是
是偶数?
?一个快速的改进是将
是偶数==true
替换为
是偶数
,将
是偶数==false
替换为
!甚至是
。谢谢@sawa,但我正在努力使代码使用&操作,这不是问题。
&&
不能被重写,因为它不是一个方法。也不能
|
。你好@sawa。这是有效的(但没有利用&&-I在标题和我的解决方案中都有&&I)。我也可以在原始请求中指定def是_偶数且_可被_七整除?(输入)[(输入%7).zero?,input.偶数?]end input=get.to _ix,y=is _偶数且_可被_七整除?(输入)put“#{input}是{”not“{x==y?”和“:”但是“}是{”不是“除非y}偶数”
def divisible_by_seven_and_even?(input)
  div_by_seven = input % 7 == 0

  if div_by_seven && input.even?
    "is divisible by 7 and is even"
  elsif div_by_seven && !input.even?
    "is divisible by 7 but is not even"
  elsif !div_by_seven && input.even?
    "is not divisible by 7 but is even"
  else
    "is not divisible by 7 and is not even"
  end    
end