python 统治者

保存自https://app.codility.com/demo/results/trainingD3NUMM-YT7/

dominator.py
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

def solution(A):
    # write your code in Python 3.6
    if A == []:
        return -1
    dominator = [0, A[0], 1]
    for i in range(1, len(A)):
        if A[i] == dominator[1]:
            dominator[2] += 1
        elif dominator[2] == 0:
            dominator[1] = A[i]
            dominator[2] = 1
            dominator[0] = i
        else:
            dominator[2] -= 1
    if A.count(dominator[1]) <= len(A) / 2:
        return -1
    return dominator[0]

python CountDiv

保存自https://app.codility.com/demo/results/training5QZ5AC-FEN/

countDiv.py
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

def solution(A, B, K):
    # write your code in Python 3.6
    Sum, num = 0, 0
    for i in range(A, B + 1):
        if i % K == 0:
            Sum += 1
            num = i
            break
    if Sum != 0:
        Sum += (B - num) // K
    return Sum

python GenomicRangeQuery

保存自https://app.codility.com/demo/results/trainingMMAZ3K-EKC/

genomicRangeQuery.py
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

def _cal(preSum, count):
    if preSum[0] > count[0]:
        return 1
    elif preSum[1] > count[1]:
        return 2
    elif preSum[2] > count[2]:
        return 3
    else:
        return 4


def solution(S, P, Q):
    # write your code in Python 3.6
    d = {'A':0, 'C':1, 'G':2, 'T':3}
    preSum = [[0, 0, 0, 0] for _ in range(len(S))]
    for i, s in enumerate(S):
        preSum[i] = preSum[i-1][:]
        preSum[i][d[s]] += 1
    result = [0] * len(P)
    for i in range(len(P)):
        x, y = P[i], Q[i]
        if x == 0:
            count = [0, 0, 0, 0]
        else:
            count = preSum[x-1]
        result[i] = _cal(preSum[y], count)
    return result

python PassingCars

保存自https://app.codility.com/demo/results/trainingKU2RK9-42Y/

passingCar.py
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

def solution(A):
    # write your code in Python 3.6
    num, Sum = 0, 0
    for a in A:
        if a == 1:
            Sum += num
        elif a == 0:
            num += 1
    return Sum if Sum <= 1000000000 else -1
            

python MissingInteger

保存自https://app.codility.com/demo/results/trainingPXBQC2-YT3/

missingInt.py
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

def solution(A):
    # write your code in Python 3.6
    count = [0] * (len(A) + 1)
    for a in A:
        if 0 < a <= len(A):
            count[a] = 1
    if 0 in count[1:]:
        return count[1:].index(0) + 1
    else:
        return len(A) + 1

python TapeEquilibrium

保存自https://app.codility.com/demo/results/training6CZR2H-QMJ/

tapeEquilibrium.py
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

def solution(A):
    # write your code in Python 3.6
    Sum = sum(A)
    minD = float("inf")
    s = 0
    for a in A[:-1]:
        s += a
        minD = min(abs(Sum - 2 * s), minD)
    return minD

python 过滤器

utils.py
def tes(node, inventory):
    from ansible.parsing.dataloader import DataLoader
    from ansible.vars.manager import VariableManager
    from ansible.inventory.manager import InventoryManager
    from ansible.vars.hostvars import HostVars

    dl = DataLoader()
    #dl.load_from_file("vars.yml")
    im = InventoryManager(loader=dl, sources=[inventory_dir])
    vm = VariableManager(loader=dl, inventory=im)

    #host = im.get_host(nodes)
    hostvars = HostVars(im, vm, dl)
    #vm.set_host_variable(host=host, varname="AAA", value="aaa")
    #print(vm.get_vars(host=host))
    return hostvars[node]

python CyclicRotation

保存自https://app.codility.com/demo/results/trainingD2QDXX-CUD/

cyclicRotation.py
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

def solution(A, K):
    # write your code in Python 3.6
    if len(A) == 0:
        return A
    K = K % len(A)
    if K <= 0:
        return A
    # inplace is better
    A[:-K] = list(reversed(A[:-K]))
    A[-K:] = list(reversed(A[-K:]))
    A.reverse()
    return A

python excel_export

excel_export
with pd.ExcelWriter('filename') as writer:
       df(writer, sheet_name="sheet name", index=False)

python Python记录器

logger.py
	#!/usr/bin/env python3
# encoding: utf-8

"""
@File: logger.py
@Author: septemberhx
@Date: 2019-01-06
@Version: 0.01
"""

import logging

formatter = logging.Formatter('[%(asctime)s] [ %(filename)s : %(lineno)s ] [ %(levelname)s ]\t : %(message)s')
logger_file_handler = logging.FileHandler('./log.log')
logger_terminal_handler = logging.StreamHandler()
logger_file_handler.setFormatter(formatter)
logger_terminal_handler.setFormatter(formatter)


def get_logger(name, level=logging.DEBUG):
    """
    :param name:
    :param level:
    :return:
    :rtype: logging.Logger
    """
    logger = logging.getLogger(name)
    logger.setLevel(level)
    logger.addHandler(logger_file_handler)
    logger.addHandler(logger_terminal_handler)
    return logger