Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: ChicoMaravilla en 6 Diciembre 2010, 19:37 pm



Título: [Python] - Cantidad de Dígitos
Publicado por: ChicoMaravilla en 6 Diciembre 2010, 19:37 pm
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
  1. print """
  2.         *******************************
  3.         *           DIGITOS           *
  4.         *******************************"""
  5. cadena=raw_input("Escribe una frase: ")
  6. while cadena!="":
  7.    digitos=0
  8.    for numero in cadena:
  9.            if numero==int:
  10.                digitos += 1
  11.    print cadena
  12.    print "Digitos: ",digitos
  13.    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  >:(


Título: Re: [Python] - Cantidad de Dígitos
Publicado por: Dnk! en 6 Diciembre 2010, 20:19 pm
Una pista, prueba con esto. Piensa que en unicode los caracteres se encuentran ordenados.

Código
  1. if numero>='0' and numero<='9':
  2.  

xDnk!


Título: Re: [Python] - Cantidad de Dígitos
Publicado por: ChicoMaravilla en 6 Diciembre 2010, 20:58 pm
Es verdad!!! no me di cuenta, muchicimas gracias  ;-)


Título: Re: [Python] - Cantidad de Dígitos
Publicado por: ChicoMaravilla en 7 Diciembre 2010, 00:28 am
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
  1. print """
  2.         *******************************
  3.         *           NUMEROS           *
  4.         *******************************"""
  5. cadena=raw_input("Escribe una frase: ")
  6. while cadena!="":
  7.    digitos=0
  8.    anterior=0
  9.    for numero in cadena:
  10.        if numero>='0' and numero<='9':
  11.            digitos +=1
  12.        if numero in cadena[len(numero)-1]>='0' and numero<='9':
  13.            anterior+=1
  14.  
  15.  
  16.    total=digitos-anterior
  17.    print cadena
  18.    print "NUMEROS: ",total
  19.    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


Título: Re: [Python] - Cantidad de Dígitos
Publicado por: lnvisible en 7 Diciembre 2010, 02:31 am
Las dos funciones que quieres:

Código
  1. from re import findall
  2. def digitos(s): return len(findall('\d', s))
  3. 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.