Resolvendo string dividida em python sem o uso da função split ()

Enfrentou uma pergunta de entrevista em Python que era a seguinte?

ex: 
input = ('192.168.15.1', '.', -1) ===> output = (192, 168, 15, 1)
input = ('192.168.15.1', '.', 2) ===> output = ( 192, 168, 15.1 )

Resolva de forma que a entrada (sequência, caractere, número inteiro) forneça a saída de forma que a sequência seja dividida pelo caractere e se o número inteiro for 0 ou menor que o resto da sequência, o número de caracteres por onde a divisão de caracteres ocorre apenas para o valor de inteiro.

Eu escrevi o código, embora ele funcione bem dentro dos limites e sem condição de erro. Existe um código melhor lá fora, por favor, compartilhe.

obrigado

def split_string(string,ch,inte):

    q = string 
    c = ch
    i = inte
    s =list(q)
    #Check if integer value is negative or positive 
    if i <= 0:
        # split the string one time 
        r1 = split_once(s,c)
        print r1
    else:
        #split according to the integear value
        r2 = split_acc_intger(s,c,i)
        print r2
def split_once(s,c):
    y = 0
    d = []
    for x in range(len(s)):
        if s[x] == c:
           p=s[y:x]
           d.append(''.join(p))
           y = x + 1
        elif x == len(s)-1:
           p=s[y:]
           d.append(''.join(p))
   return d

def split_acc_intger(s,c,i):
    y = 0
    d =[]
    count = 1
    for x in range(len(s)):
        # the leat number will 1
        if s[x] == c:
            p=s[y:x]
            d.append(''.join(p))
            y = x + 1
            count += 1
       elif count == i :
            p=s[y:]
            d.append(''.join(p))
            break
    return d

questionAnswers(5)

yourAnswerToTheQuestion