[Python3] Ayuda contar numeros en string

Iniciado por reconFito, 29 Diciembre 2019, 18:04 PM

0 Miembros y 1 Visitante están viendo este tema.

reconFito

Hola buenas a todos, molestaba a ver si me dan alguna de idea de como solucionar este ejercicio

Debo de diseñar un programa que cuente la cantidad de numeros en una cadena, lo que he podido realizar hasta ahora es simplemente contar  la cantidad de digitos que aparecen sin importar la cifra.

Ejemplo
'un 1 dos 201 tres 3', con el codigo que realice me cuenta cinco digitos y no deberian de ser cinco sino 3.
No se si me explico
Gracias de antemano por su atención

Código (python) [Seleccionar]

#Ejercicio#165 Contar cantidad de números en una cadena
  string = input("Digita una cadena: ")
  numbers = 0
  for i in range(0,len(string)):
      if string[i].isnumeric():
          numbers+=1
   print("Cantidad de números encontrados => ",numbers)


MOD: Titulo modificado (mas descriptivo)

MCKSys Argentina

Hola!

La cadena siempre tendrá el formato que has colocado? Osea, cada "item" estará separado por espacios? Si es así puedes usar str.split. Luego recorres cada item de la lista 1x1 y cuentas los numeros (str.isnumeric == True)

Ahora, si los items no está separados siempre por espacio, se me ocurre que podrías ir char x char (como haces ahora), pero si isnumeric te da True, entonces empiezas a "armar" un numero. Mientras la función siga siendo True, sigues "creando" el número. Y cuando la función dé False, entonces terminas el ciclo de "creación" del numero (cuentas/muestras el numero creado y reseteas todo para poder hacer la "creación" nuevamente, en caso de que haya más numeros de varios chars).

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


reconFito

Hola gracias por responder, en teoría la cadena siempre estará compuesta por espacios  y referente a lo de utilizar la función split y luego recorrer la lista que me genera me parece buena idea, pero la verdad estoy retomando el aprender python y  no quiero saltarme a utilizar cosas que aún no he visto, en el PDF, no sabras otra manera de hacerlo sin utilizar listas o funciones avanzadas.

Gracias de nuevo por responderme

engel lex

ciclo anindado...

en lugar de recorrer con un for a un range, recorre con un while y un contador tal que si consigues un numero, puedas hacer un ciclo dentro del ciclo hasta donseguir cualquier cosa que no sea numerico, en ese punto, sabes que ya tienes el numero completo
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

tincopasan

hola:

Citarno quiero saltarme a utilizar cosas que aún no he visto, en el PDF, no sabras otra manera de hacerlo sin utilizar listas o funciones avanzadas.
¿como adivinamos que has leído en el "PDF"?

se puede con un poco de lógica usando lo que ya has hecho! El problema es que eso no está en lo que leas.

Código (python) [Seleccionar]

string = input("Digita una cadena: ")
numbers = 0
anterior = False
for i in string:#no sé para que usaste len,range,etc.
    if i.isnumeric() and anterior == False:
        numbers+=1
        anterior=True
    elif not i.isnumeric():
        anterior=False
print("Cantidad de números encontrados => ",numbers)


No importa el lenguaje que uses, en este caso python, sino como buscas la solución.

reconFito

Gracias tincopasan por tu aporte, pero tengo una pregunta porqué en el código que hicistes evalua el primer digito del número total y el resto lo descarta.

Ejemplo:
Si ingreso "12texto23", e imprimo el valor tomando en cuenta el primer condicional me imprime 1, 2
no imprime 12, 23.Solo es una duda que me queda, puede que la pregunta sea inncesaria ya que el problema está resuelto.

Gracias.

tincopasan

hola:
        el código ya te dió la respuesta, descarta los otros porque son una molestia para el planteo que hiciste, con la unidad ya sobra para saber que es un número, sin importar la cantidad de unidades, o sea 1 es un número y 12547893 también, como no quiero que los identifique en sus unidades solo verifico que haya una letra. Es muy simple, deberías intentar entenderlo, solo leyendo el condicional justamente.
Saludos.