【问题标题】:Expressing a time in natural language, rounded to five-minute intervals用自然语言表达时间,四舍五入到五分钟间隔
【发布时间】:2013-09-20 23:53:05
【问题描述】:

我想编写一个时间格式化程序time_format(hours, minutes),它需要一天中的某个时间,以小时和分钟表示,四舍五入到最接近的 5 分钟,然后用英文单词表示。

我需要编写一个格式化输入的方法,例如

"9,1"

进入“九点”

time_format(9, 1) returns "nine o'clock"
time_format(9, 5) returns "five after nine"
time_format(9, 13) returns "quarter after nine"
time_format(9, 9) returns "ten after nine"
time_format(9, 20) returns "twenty after nine"
time_format(9, 24) returns "twenty five after nine"
time_format(9, 30) returns "half past nine"
time_format(9, 36) returns "twenty five to ten"
time_format(9, 38) returns "twenty to ten"
time_format(9, 45) returns "quarter to ten"
time_format(9, 50) returns "ten to ten"
time_format(9, 56) returns "five to ten"
time_format(12, 00) returns "noon"
time_format(15, 20) returns "twenty after three"
time_format(23, 45) returns "a quarter to midnight"

知道我该怎么做吗?我一直在查看日期对象,但它没有给我提供像 20 这样的数字并获取它的文字文本的方法。

【问题讨论】:

  • 你试过什么?您必须发布一个特定问题供我们回答。只为你做所有的工作是不道德的,会阻碍你的成长。如果你能展示更多的作品,我很乐意提供帮助。实际上,我有一些想法!
  • 要求非常模糊。如果您可以为输出提供精确的规范,那将有助于我们回答,也将指导您思考问题。 (对了,这是作业吗?看起来真的很像作业。)
  • 日期对象无济于事。我实际上建议完全忽略这个问题的标准库。
  • 我同意,实际上不要使用任何东西,除了 if、elif 和 print,你可以做到。我刚刚完成了我的原型。这是一个巧妙的问题。
  • 写一个超花哨的时间格式化器,time_format(h,m),它需要一天中的某个时间,用小时和分钟表示,四舍五入到最接近的5分钟,然后用字符串表示.是问题,是的,这是家庭作业。我只是不知道该怎么做。

标签: python date format


【解决方案1】:

好的,现在,您提出了一个想法,所以这是我朝着正确方向的推动。我认为您很擅长使用字典。但是对于如何构建输出,第一个数字还是第二个数字更重要的是什么?

第二个!

但字典不适用于第二种情况,如果 elif 链,则需要。这是我用来处理第二个值的代码的两个 sn-ps。我希望从那里开始应该很容易!

def time_eval_thingy ( a, b ):
b = int( b ) # probably not needed, just to be sure
if b < 5:
  outputstring = "SPECIAL"
elif b < 10:
  outputstring = "5 after "

...
elif b < 50
  outputstring = "Quarter until "
  a += 1 # a is the hour, and increasing it here will make the hour appear higher in the dictionary call that occurs after the time when we decide the signifcance of b

我应该补充一点,稍后我检查输出是否为“SPECIAL”,如果是,我将“O'clock”添加到末尾以获取不是 12 或 00 的值(将整个字符串转换为中午或午夜)

【讨论】:

  • 我没有得到“将其四舍五入到最接近的 5 分钟,并将其表示为字符串。”。九后十如何?是因为最接近 5 到 9 是 5+5=10?另外我想知道时间链是如何工作的。我习惯只说5:10。 5 后不是 10。那么我是否要一直持续到满 50 分钟?即 5 后 10、5 后 15、5 后 20 .... 5 后 50?谢谢!
  • 我认为你把比较倒过来了。此外,它没有使用正确的舍入截止值。
  • 我倒着输入了比较,并使用了自己的舍入截止值。这是我自己编写的代码,我把它作为一个想法展示给你看。你的问题需要一个想法,不是吗?做自己的四舍五入并将其用作模板。还是按照自己的方式做,我不介意!这只是我的想法,也是我使用的方法。
  • @user2417731 如果你注意到,在我的最后一个例子中,当我使用“直到”类型时,我会增加一个(这是你的小时)。 a 的增加会在您搜索字典时反映出来。
  • 我认为您让要求澄清问题(而不是代码)的人和选择您的代码的人感到困惑。我不是选择你的代码的人。我只是希望你比我更了解这个问题。
猜你喜欢
  • 1970-01-01
  • 2015-01-17
  • 2010-10-24
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
  • 2020-11-05
  • 1970-01-01
  • 2016-04-27
相关资源
最近更新 更多