我正在使用codecademy学习Ruby,当前练习告诉用户:
在编辑器中定义两个方法:
一个greeter
方法,它接受一个字符串参数name,并返回一个问候该人的字符串。 (确保使用return并且不要使用print或puts。)
一个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
答案 0 :(得分: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问题时肯定是错的。)
答案 1 :(得分:0)
def by_three(number)
number = gets.chomp
if number.to_i % 3 == 0
return true
else return false
end
您忘记将数字转换为整数,这就是代码无效的原因。
答案 2 :(得分: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
我认为这是一个很好的答案。
答案 3 :(得分: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)
这可能会有所帮助