0

Codecademy を使用して Ruby を学んでおり、現在の演習ではユーザーに次のように指示しています。

エディターで 2 つのメソッドを定義します。

単一のgreeter文字列パラメーター name を取り、その人に挨拶する文字列を返すメソッド。(必ず return を使用し、print や puts は使用しないでください。)

単一のby_three?整数パラメーター数値を取り、その数値が 3 で割り切れる場合は true を返し、そうでない場合は false を返すメソッド。ブール値を生成するメソッド名をクエスチョン マークで終了することは、Ruby のベスト プラクティスであることを忘れないでください。

それに基づいて、いくつかのコードを思いつきましたが、機能せず、修正方法や何が欠けているのかわかりません。正しい方向へのプッシュは大歓迎です!これが私のコードです:

def greeter (name)

name = gets.chomp
return "Hi there #{name} sucka!"
end

def by_three(number)

number = gets.chomp
if number % 3 == 0
return true
else return false
end
4

4 に答える 4

1

次のようなことを考えてみましょう:

def greeter(name)
  "Hi there #{name}!"
end

def by_three?(number)
  number % 3 == 0
end

これらは次で確認できますirb

1.9.3p327 :010 >   greeter 'joe'
 => "Hi there joe!" 
1.9.3p327 :011 > by_three? 9
 => true 
1.9.3p327 :012 > by_three? 10
 => false 

ノート:

では、メソッドで実行された最後の式の結果がメソッドの値として自動的に返されるため、どうしても必要な場合を除き、ruby使用しないのが一般的です。return

また、あなたが取り組んでいる質問の私の解釈は、メソッドがパラメーターを受け取ることを望んでいるように見えるためgets、標準入力から読み取る呼び出しを削除し、代わりにメソッドが渡されたパラメーターで動作することを期待しています。(ただし、コードアカデミーの質問を読んだ場合、私は確かに間違っている可能性があります。)

于 2013-05-04T02:48:21.257 に答える
0
def by_three(number)
   number = gets.chomp
   if number.to_i % 3 == 0
      return true
   else return false
end

数値を整数に変換するのを忘れたため、コードが機能していません。

于 2013-05-04T02:47:02.683 に答える
0
def greeter(name)
  return ("greeting " + name)
end 

greeter("rahul")

def by_three?(number, i)

    if number % 3 == i
        i % 2 == 0 
        return "true"
    else 
        return "false"
    end

    end 
    by_three?(12,1)

これは役立つかもしれません

于 2014-01-17T07:08:36.933 に答える
0
def by_three?(number)
    if !number
        number = gets.chomp
    end

    if ("" << number.to_s) =~ /^(\d)+$/
        number.to_i % 3 == 0
    else
        false
    end 
end

これは良い答えだと思います。

于 2013-05-04T04:23:21.663 に答える