输入n个数,求出最大最小时间

题目:

输入数据n(n>=6)代表n个数,从0-9任意输入n个数,然后在n个数选出6个数xx-xx-xx表示 时:分:秒,求出最小时间和最大时间,若时间无效,则输出时间无效,例如: 
输入: 

6 5 4 3 2 1 
输出: 
12:34:56 23:56:41

输入: 

999999 
输出: 
时间无效

 

import random


def min_max_date(n):
    if n < 6:
        return "valid n"
    nums = []
    for i in range(n):
        nums.append(int(random.random() * 10))

    mind = min_date(nums)
    maxd = max_date(nums)

    print mind, maxd


def min_date(nums):
    nums = sorted(nums)

    print nums

    if nums[0] > 2:
        return "valid date"

    if nums[1] > 3:
        return "valid date"

    h_1 = nums[0]
    h_2 = nums[1]

    nums = nums[2:]

    if nums[0] > 5:
        return "valid date"

    m_1 = nums[0]

    nums = nums[1:]

    if nums[1] > 5:
        m_2 = nums[1]
        nums.pop(1)
    else:
        m_2 = nums[0]
        nums.pop(0)

    if nums[0] > 5:
        return "valid date"

    s_1 = nums[0]
    s_2 = nums[1]

    return "%s%s:%s%s:%s%s" % (h_1, h_2, m_1, m_2, s_1, s_2)


def max_date(nums):
    h_1 = gen(0, 2, nums)
    if h_1 is None:
        return "valid date"

    h_2 = gen(0, 3, nums)
    if h_2 is None:
        return "valid date"

    m_1 = gen(0, 5, nums)
    if m_1 is None:
        return "valid date"

    m_2 = gen(0, 9, nums)
    if m_2 is None:
        return "valid date"

    s_1 = gen(0, 5, nums)
    if s_1 is None:
        return "valid date"

    s_2 = gen(0, 9, nums)
    if s_2 is None:
        return "valid date"

    return "%s%s:%s%s:%s%s" % (h_1, h_2, m_1, m_2, s_1, s_2)


def gen(s, e, nums):
    n = None
    for i in range(len(nums)):
        num = nums[i]
        if s <= num <= e:
            n = num
        else:
            nums.pop(i - 1)
            break
    return n


min_max_date(10)

其实最小值也可按求最大值方式取,客户们自己动手吧

 

转载于:https://my.oschina.net/u/914655/blog/1794230

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值