学习python,每日练习20200820

符合要求的时间组合

'''
今天的题目比较有意思。
会给你一个列表,有四个数,[2,3,1,6]
你需要做的是,把这四个数字组成一个时间格式,并使得这个时间是所有组合中最晚的组合。
例如[2,3,1,6]可以组成,13:26,16:23等等,但是最晚的时间是23:16。所以请返回23:16这个结果。
如果四个数无法组成时间格式,返回""。
答案一样会延迟放出。你猜我到底是会还是不会呢?

解题思路
1)四个数字中必须有两个数据小于等于2,才能组成时间格式(小时是有0,1,2这三个数字中任一两个组成)
2)[2,3,1,6]*[2,3,1,6]的permutations 排列
3)在组成的排列中找最大的时间为小时的组合且剩下的两个数字必须有一个小于6(如果剩下的两个数字均大于6 ,则无法组合为分;例如2,1,6,6 不能为21:66
必须为16:26)
'''
import itertools
def late_clock(list):
    compose = itertools.permutations(list, 2)
    max_local = 0
    max_global = 0
    list_end1 = []
    list_end2 = []
    for each in compose:
        list_each = list.copy()
        list_each.remove(each[0])
        list_each.remove(each[1])
        sum1 = each[0] * 10 + each[1]
        if sum1 < 24 and min(list_each) < 6:
            if max_local <= sum1:
                max_local = sum1
                list_end1 = each[0:2]
                list_end2 = list_each[0:2]
            if max_global < max_local:
                max_global = max_local
                list_end1 = each[0:2]
                list_end2 = list_each[0:2]
    if(len(list_end1)!=0):
        hour = list_end1[0] * 10 + list_end1[1]
        list_end2.sort()
        minute = list_end2[1] * 10 + list_end2[0]
        if minute > 60:
            minute = list_end2[0] * 10 + list_end2[1]
        result = str(hour) + ':' + str(minute)
        return result
    else:
        return ''

def assert_equals(funs,target,*args):
    if(funs == target):
        print("SUCC")
    else:
        print("FAIL ! {0} not eaqual{1}".format(funs,target))


assert_equals(late_clock([9, 1, 2, 5]), '21:59')
assert_equals(late_clock([0, 2, 2, 2]), '22:20')
assert_equals(late_clock([9, 0, 1, 1]), '19:10')
assert_equals(late_clock([2, 3, 2, 4]), '23:42')
assert_equals(late_clock([1, 2, 8, 9]), '19:28')
assert_equals(late_clock([4, 7, 8, 9]), '')

题目地址:
https://fishc.com.cn/forum.php?mod=viewthread&tid=86832&ctid=588

找字符串的不同

'''
这题算明天的。星期天来点简单的。
春天到了,树上的小鸟总是叫个不停。
男生叫起来'Ha',女生叫起来'ha',男生一句女生一句但是一句随便叫几声。
好了,现在请你根据叫声,算出有几只小鸟。
给出一个函数:def kooka_counter(laughing),返回小鸟的数量。
例如:HaHaHahahaHaHa  分段为:   男 HaHaHa  女 haha   男  HaHa,所以这是3只。返回是3。
'''

'''
解题思路:
1、定义一个变量temp存在每次更新的叫声例如第一次为Ha,如果发现变化了那么temp= ha
2、定义一个变量count,每次temp变量就+1

'''
def kooka_counter(laughing):
    temp = ''
    count = 0
    for i in range(0,len(laughing),2):
        if temp != laughing[i:i+2]:
            temp = laughing[i:i+2]
            count += 1
    return count

print(kooka_counter("hahahahahahahaHaHa"))

题目地址:
https://fishc.com.cn/forum.php?mod=viewthread&tid=86873&ctid=588

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值