首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >简化函数

简化函数
EN

Stack Overflow用户
提问于 2013-01-28 02:11:48
回答 1查看 213关注 0票数 2

我已经写了这个函数,我认为它会工作,但我不是100%确定。但是我很好奇这是非常复杂的。有没有什么方法可以让这一切变得更简单?

这三个参数是' HH : MM‘形式的时间,其中00 <= HH <= 23和00 <= MM <= 59。前两次是时间估计,第三次是实际时间。返回最接近实际时间的时间估计值,前两个参数之一。如果它们是同样接近的,则第一次返回。

代码语言:javascript
运行
复制
(str, str, str) -> str  


def closest_time(guess1, guess2, answer):
    if abs((int(answer[:2])) - (int(guess1[:2])) > ((int(answer[:2])) - int(guess2[:2]))):
        return guess2
    if abs((int(answer[:2])) - (int(guess1[:2])) < ((int(answer[:2])) - int(guess2[:2]))):
        return guess1
    if abs((int(answer[:2])) - (int(guess1[:2])) == ((int(answer[:2])) - int(guess2[:2]))):
        if abs((int(answer[3:])) - (int(guess1[3:])) > ((int(answer[3:])) - int(guess2[3:]))):
            return guess2
        if abs((int(answer[3:])) - (int(guess1[3:])) < ((int(answer[3:])) - int(guess2[3:]))):
            return guess1
        if abs((int(answer[3:])) - (int(guess1[3:])) == ((int(answer[3:])) - int(guess2[3:]))):
            return guess1
EN

回答 1

Stack Overflow用户

发布于 2013-01-28 02:15:54

我会使用m = int(HH) * 60 + int(MM)HH:MM表单转换为会议记录。这应该会大大简化问题。

把所有这些放在一起:

代码语言:javascript
运行
复制
>>> def to_minutes(s):
        return int(s[:2]) * 60 + int(s[-2:])

>>> def closest_time(guess1, guess2, answer):
        g1, g2, a = map(to_minutes, [guess1, guess2, answer])
        return guess1 if abs(g1 - a) <= abs(g2 - a) else guess2

>>> closest_time('08:05', '10:30', '08:10')
'08:05'
>>> closest_time('08:05', '10:30', '10:05')
'10:30'
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14550466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档