输入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)

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

 

点赞