【问题标题】:Explain time Conversion to minutes and hours解释时间转换为分钟和小时
【发布时间】:2017-07-03 11:06:48
【问题描述】:

有人可以向我解释一下这是如何工作的吗?

While minutes >=60...

Ruby 怎么知道有多少小时???

def time_conversion(minutes)
  hours = 0

  while minutes >= 60
    hours = hours + 1
    minutes = minutes - 60
  end
  return hours
end

【问题讨论】:

  • while 循环正在计算它们。是您遇到问题的基本数学还是 ruby​​ 代码?
  • 这是一些非常有缺陷的代码。你在哪里找到它? hours, minutes = minutes / 60, minutes % 60 做同样的工作。
  • "Ruby 怎么知道有多少小时?" – 它没有。这就是代码正在计算的内容。
  • 数学没有问题,但代码本身有问题。我不明白 Ruby 怎么知道一小时有 60 分钟。没有明确规定一小时 60 分钟的代码。
  • @imperfectskillz:Ruby 不知道。它在代码中。你没看到代码中的60 吗?两次?

标签: ruby time


【解决方案1】:

好吧,看几个例子。

如果minutes 是125,应该返回多少小时? 125 - 60 - 60 = 5。有两个 60 年代,所以 两个 小时。

如果minutes 是65,应该返回多少小时? 65 - 60 = 5。只有一个 60,所以 一个 小时。

Ruby 代码做同样的事情,计算它可以减去多少次 60,直到它不能再减去(即,再减去一个 60 将导致一个负数)。它使用while 循环来完成此操作。

while 循环内的两行:

hours = hours + 1
minutes = minutes - 60

更新hoursminutes 变量,就像我们在示例中所做的那样。当minutes 小于 60 时,我们停止并返回我们计算的总小时数。

【讨论】:

  • 我只是不明白 ruby​​ 如何知道分钟和小时之间的相关性。它怎么知道一小时有 60 分钟?
  • @imperfectskillz 我们写了 60。
  • 哪里说小时 = 60 分钟?
  • 它没有。 Ruby 什么都不“知道”。计算机是简单的机器,我们编写算法来做有用的工作。该算法反复从分钟数中减去 60,因为 我们 知道一小时有 60 分钟。计算机不知道这一点,只是盲目地做我们告诉它做的事情。
【解决方案2】:

这个简单的方法怎么样:

def time_conversion(minutes)
  hours = (minutes/60 % 60)
  return hours
end

> time_conversion(125)
#=> 2 
> time_conversion(165)
#=> 2 

现在让我们将其转换为 "HH:MM"

def time_conversion(minutes)
  hh_mm = [minutes / 60 % 60, minutes % 60].map { |t| t.to_s.rjust(2,'0') }.join(':')
  return hh_mm
end

>  time_conversion(125)
#=> "02:05" 
>  time_conversion(165)
#=> "02:45"

【讨论】:

  • @imperfectskillz :如果这个答案对您解决问题有帮助,那么您可以将其标记(打勾)为已回答
猜你喜欢
  • 2021-12-27
  • 1970-01-01
  • 2015-07-20
  • 1970-01-01
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多