Python, programa que muestre la cantidad más grande de dígitos que aparecen consecutivos en una frase

Estoy aprendiendo a usar python y estoy resolviendo ejercicios. Me encuentro actualmente en el siguiente

Crea un programa que lea una secuencia de caracteres y devuelva la longitud de la mayor subsecuencia de dígitos que hayan sido introducidos.

Ejemplo: Introduce una cadena: efg316er4li98bdtr421p43

La longitud de la mayor subsecuencia de dígitos es 3

Tengo escrito uno pero tengo un problema cuando la frase termina en un número, si me dijeran donde está el error y como arreglarlo, lo agradecería

frase=input('Introduce una frase: ')
digitos=0
maximo=0

for i in range (len(frase)):
        a=i
        while '0'<=frase[a]<='9':
                if a!=len(frase)-1:
                        digitos+=1
                        a=a+1
                else:
                        digitos+=1

          if digitos> maximo:
                  maximo=digitos

          digitos=0

Print('La longitud de la mayor subsecuencia de dígitos es ', maximo)

Esto es lo que llevo, he intentado arreglar lo que sigue luego del while pero nada. SOLO PUEDO UTILIZAR while, for in, if, else, elif, propiedades de strings, no puedo usar listas. Si tienen más duda en que puedo utilizar me dicen y respondo.(Pero basicamente puedo usar las cosas que puse en el ejercicio)

No dudo que haya una manera más sencilla, si no encuentran como arreglar mi ejercicio, pero encuentran otra forma de hacerlo, me gustaría verla, pero sin explicaciones para ver si la entiendo y cualquier duda pregunte

1 Respuesta

Respuesta
1

Ignoro si puedes usar control de excepciones, por lo tanto te recomiendo la mejor manera para mi de hacerlo usando estructuras básicas. No te enseñare el código, porque veo que quieres aprender por lo tanto te explicare que hacer, y no dudo que conseguirás sacarlo tu mismo. Veras se trata de un "truco" muy fácil, cuando no puedes usar Listas u otros mecanismos lo más optimo es lo siguiente (pseudocodigo):

mi_cadena = 'efg316er4li98bdtr421p43'

posibles_valores = '0123456789'

valor_actual = 0;

valor_max = 0;

por i en mi_cadena repite:

    si posibles_valores.find(mi_cadena[i]) >=0 entonces

        valor_actual + 1;

    sino

        si valor_max < valor_actual entonces

            valor_max = valor_actual

            valor_actual = 0

Al acabar el bucle, dentro de valor_max tendrás la secuencia más larga de dígitos seguida.

Gracias, voy a intentar con esto. Si me surge una duda te consulto, de hecho no conocía el find, pero ya busqué y es bastante útil

¿Has logrado reproducir la solución?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas