小编ide*_*hed的帖子

使用一系列等级计算字母等级

这里有Noob和Ruby.通过一些练习并撞墙.

练习:计算一系列成绩的字母等级

创建一个方法get_grade,它接受一组测试分数.数组中的每个分数应该在0到100之间,其中100是最大分数.

计算平均分数并将字母等级返回为字符串,即"A","B","C","D","E"或"F".

我一直在回复错误:

avg.rb:1: syntax error, unexpected tLBRACK, expecting ')'
def get_grade([100,90,80])
               ^
avg.rb:1: syntax error, unexpected ')', expecting $end
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所拥有的.我想坚持下面的方法或.join,因为我正在尝试使用我们在课堂上学习的方法.因此,总和,注入等不一定有用.我提前为请求的特殊性道歉:)我确信有更好的方法可以减少代码,但我只是想以这种方式开始学习它.

    def get_grade([100,90,80])
      get_grade = (array[0] + array[1] + array[2]).to_i / array.length.to_i
    case get_grade
      when 90..100
      "A"
      when 80..90
       "B"
      when 70..80
       "C"
      when 60..70
       "D"
      when 0..60
       "F"
      else
     "Error"
      end
    end

    puts get_grade([100,90,80])
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

5
推荐指数
1
解决办法
3299
查看次数

Ruby练习:计算给定范围之间的数组中的数字

因此,通过上述练习,在GitHub上找到了这个解决方案.

def count_between arr, lower, upper
  return 0 if arr.length == 0 || lower > upper
  return arr.length if lower == upper
  range = (lower..upper).to_a
  arr.select { |value| range.include?(value) }.length
end
Run Code Online (Sandbox Code Playgroud)

我理解前三行是什么意思,以及为什么他们返回他们所做的值.我想了解的是以下几行代码.

第4行(下面)将"range"定义为变量,并使用lower ... upper作为范围变量(刚发现你不需要在一个范围内放置一个整数值.'.to_a'是什么意思,似乎无法在ruby文档中找到它,它有什么作用?

 range = (lower..upper).to_a
Run Code Online (Sandbox Code Playgroud)

第5行(下面)使用的是Array#select方法,如果该值包含在此范围内,则选择此值,然后给出所有选定值的Array#length,但我不太明白A. what |值| 正在做什么,它意味着什么.B. range.include?(value)表示此值包含在我假设的范围内.

 arr.select { |value| range.include?(value) }.length
Run Code Online (Sandbox Code Playgroud)

ruby

0
推荐指数
1
解决办法
3240
查看次数

标签 统计

ruby ×2

ruby-on-rails ×1