2013-05-04 31 views
0

我使用Codecademy網站和當前的鍛鍊學習Ruby告訴用戶:方法語法有限制沒有運行

定義編輯器中的兩種方法:

一個greeter方法,它接受一個字符串參數,名字,並返回一個字符串問候該人。 (請務必使用退貨並且不要使用打印或放入。)

A by_three?採用單個整數參數number的方法,如果該數字可以被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 

回答

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調用從標準輸入中移除,而是期望方法對參數進行操作傳遞給它。 (雖然我在閱讀codeacademy問題時肯定會出錯)。

+0

謝謝!這是有用的!看起來我有點複雜了。 – Jason 2013-05-04 03:16:19

0
def by_three(number) 
    number = gets.chomp 
    if number.to_i % 3 == 0 
     return true 
    else return false 
end 

你忘記了數字轉換成整數,這就是爲什麼代碼不能正常工作。

+0

好一點。不是他指出了這個練習,但我會在後面記住這一點。謝謝! – Jason 2013-05-04 03:16:59

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 

我認爲這是一個很好的答案。

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) 

這可能有助於

相關問題