[Python] - Cantidad de Dígitos

Iniciado por ChicoMaravilla, 6 Diciembre 2010, 19:37 PM

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

ChicoMaravilla

No entiendo el ejercicio numero 173, que indica que tengo que diseñar un programa que muestre la cantidad de dígitos que ingresó el usuario anteriormente. y un ejemplo que nos da es: La cadena "un 1 y un 20", tienen 3 dígitos: un 1, un 2 y un 0

la cosa que no entiendo, es como se simboliza a los números, que tipo de datos son . comprendo que los números enteros se representan con "int", los flotantes con "float" y en caso de redondear "round". Bueno yo lo que hago es lo siguiente:

Código (python) [Seleccionar]
print """
         *******************************
         *           DIGITOS           *
         *******************************"""
cadena=raw_input("Escribe una frase: ")
while cadena!="":
    digitos=0
    for numero in cadena:
            if numero==int:
                digitos += 1
    print cadena
    print "Digitos: ",digitos
    cadena=str(raw_input("Escribe una frase: "))


el problema es que me aparece como dígitos :0 en todas las posibilidades. Y trato de cambiarlo probando diferentes cosas, pero me dan resultados que no son deseados. Si alguno me podría ayudar, desde ya le doy las gracias  >:(

Dnk!

Una pista, prueba con esto. Piensa que en unicode los caracteres se encuentran ordenados.

Código (python) [Seleccionar]

if numero>='0' and numero<='9':


xDnk!




Comentar es agradecer.
Visita Mi Blob

ChicoMaravilla

Es verdad!!! no me di cuenta, muchicimas gracias  ;-)

ChicoMaravilla

#3
Revivo este tema, para no hacer otro post, ya que esta pregunta tiene similitudes con el ejercicio anterior.
Busque en google y en el foro, pero no encontré que hallan puesto este ejercicio, a lo que no encontré otro medio para averiguar esto...

Bueno ahora me pide que modifique el programa para que en vez de dígitos, registre números, es decir, conjuntos de dígitos agrupados de tal forma que son números,

por ejemplo que en la cadena de texto:"2, 20, 200, son pares"
identifique como números: 3

yo lo que voy haciendo es:

Código (python) [Seleccionar]
print """
        *******************************
        *           NUMEROS           *
        *******************************"""
cadena=raw_input("Escribe una frase: ")
while cadena!="":
   digitos=0
   anterior=0
   for numero in cadena:
       if numero>='0' and numero<='9':
           digitos +=1
       if numero in cadena[len(numero)-1]>='0' and numero<='9':
           anterior+=1
           

   total=digitos-anterior
   print cadena
   print "NUMEROS: ",total
   cadena=raw_input("Escribe una frase: ")


Quiero que lea si hay uno anterior antes del numero, pero me resulta muy difícil, no es por parte de falta de estudio que hago esta preguntas, no especifica bien como hacer y nos deja que rasonamos el libro, pero me resulta muy complicado.

O cea mi pregunta es, como hago para hallar la ubicación de delante o atrás de cierto carácter.

PD: perdonen por el doble post

lnvisible

Las dos funciones que quieres:

Código (python) [Seleccionar]
from re import findall
def digitos(s): return len(findall('\d', s))
def numeros(s): return len(findall('\d+', s))


Las expresiones regulares son muy útiles, perl es interesante, a lo mejor después de aprender python: http://foro.elhacker.net/scripting/python_objetos_que_se_guardan_y_cargan_solos-t313111.0.html ¿una ayudita?  ;D

Si quieres seguir como los estas haciendo pon un booleano para saber si el anterior caracter era digito o no, y segun eso sumas uno a la cuenta o no.