Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: erickcasita en 28 Enero 2018, 03:54 am



Título: [Python 3x] Contar las letras de cualquier frase
Publicado por: erickcasita en 28 Enero 2018, 03:54 am
Hola, comunidad soy relativamente nuevo en python y me propuse contar las letras de cualquer frase esto es lo que tengo, como soy nuevo no se que más agregarle o que modificarle para que el código bien. Tampoco encuentro un método que me ayude a excluir los signos ¡Saludos! ;D ;D

Código
  1. titulo= "Contar las letras de cualquier frase".capitalize() #Variable para el titulo
  2. print (titulo.center(50,"*"))#centro el titulo
  3. frc=(input("Ingresa una frase "))#se solicita la frase
  4. let=len(frc)#saco la logitud original
  5. cont=0 #contador para los espacios
  6. contnum=0 #contador para los numeros
  7. contpuc=0 #contador para los signos
  8. suma=0 #variable para sumar los contadores
  9. for i in range(0,let):
  10.    if (frc[i].isspace()):
  11.        cont+=1
  12.    elif(frc[i].isdigit()):
  13.        contnum+=1
  14.    elif(frc[i] in "?¡¿*,.-_'"): #agrego los signos a discriminar (no se si hay un método)
  15.        contpuc+=1
  16.    suma=cont+contnum+contpuc #sumo los contadores
  17. rpta=let-suma #al final solo lo resto a la longitud original
  18. print("La frase tiene palabras",rpta)
  19.  


Título: Re: [Python 3x] Contar las letras de cualquier frase
Publicado por: rub'n en 28 Enero 2018, 04:15 am
. ^ $ * + ? { } [ ] \ | ( )  ?

Pásate por aquí Regular Expressions, incluso tu código quedara mas corto homie
https://docs.python.org/3/howto/regex.html


Título: Re: [Python 3x] Contar las letras de cualquier frase
Publicado por: erickcasita en 28 Enero 2018, 05:48 am
¡Gracias! sigo leyendo un poco sobre las expresiones regulares
Código
  1. import re
  2. titulo= "Contar las letras de cualquier frase".capitalize() #Variable para el titulo
  3. print (titulo.center(50,"*"))#centro el titulo
  4. frc=(input("Ingresa una frase "))#se solicita la frase
  5. let=len(frc)#saco la logitud original
  6. contnum=0 #contador para los numeros
  7. contpuc=0 #contador para los signos
  8. suma=0 #variable para sumar los contadores
  9. for i in range(0,let):
  10.    if(frc[i].isdigit()): #cuento los numeros
  11.        contnum+=1
  12.    elif(re.search("[^a-zA-Z0-9_]",frc[i])): #cuento los espacios en blanco y cualquier signo
  13.        contpuc+=1
  14.    suma=contnum+contpuc #sumo los contadores
  15. rpta=let-suma #al final solo lo resto a la longitud original
  16. print("La frase tiene palabras",rpta)
  17.  


Título: Re: [Python 3x] Contar las letras de cualquier frase
Publicado por: rub'n en 28 Enero 2018, 05:58 am
¡Gracias! sigo leyendo un poco sobre las expresiones regulares
Código
  1. import re
  2. titulo= "Contar las letras de cualquier frase".capitalize() #Variable para el titulo
  3. print (titulo.center(50,"*"))#centro el titulo
  4. frc=(input("Ingresa una frase "))#se solicita la frase
  5. let=len(frc)#saco la logitud original
  6. contnum=0 #contador para los numeros
  7. contpuc=0 #contador para los signos
  8. suma=0 #variable para sumar los contadores
  9. for i in range(0,let):
  10.    if(frc[i].isdigit()): #cuento los numeros
  11.        contnum+=1
  12.    elif(re.search("[^a-zA-Z0-9_]",frc[i])): #cuento los espacios en blanco y cualquier signo
  13.        contpuc+=1
  14.    suma=contnum+contpuc #sumo los contadores
  15. rpta=let-suma #al final solo lo resto a la longitud original
  16. print("La frase tiene palabras",rpta)
  17.  

Creo que tienes detalles en la linea 12 pásate por acá https://regex101.com/r/rR2hZ1/7  osea digo, xq en un principio tu objetivo era contar letras de cualquier frase


Título: Re: [Python 3x] Contar las letras de cualquier frase
Publicado por: dariodr01 en 28 Enero 2018, 15:55 pm
Esto es lo que quieres.
Salu2

Código
  1. def cuentaCaracteres(frase):
  2.  c = 0
  3.  
  4.  for i in range(len(frase)):
  5.    if frase[i].isalpha():
  6.      c += 1
  7.  
  8.  return c
  9.  
  10. #Main
  11. cadena = input('Ingrese una frase:')
  12. print('La frase "%s" tiene %d caracteres' %(cadena,cuentaCaracteres(cadena)))
  13.  


Título: Re: [Python 3x] Contar las letras de cualquier frase
Publicado por: erickcasita en 29 Enero 2018, 16:59 pm
Creo que tienes detalles en la linea 12 pásate por acá https://regex101.com/r/rR2hZ1/7  osea digo, xq en un principio tu objetivo era contar letras de cualquier frase

Curiosamente si funciona bien aunque si quito la instrucción isdigit  me cuenta tambien los números a la hora de imprimirlos por eso la deje... saludos


Título: Re: [Python 3x] Contar las letras de cualquier frase
Publicado por: erickcasita en 29 Enero 2018, 17:04 pm
Esto es lo que quieres.
Salu2

Código
  1. def cuentaCaracteres(frase):
  2.  c = 0
  3.  
  4.  for i in range(len(frase)):
  5.    if frase[i].isalpha():
  6.      c += 1
  7.  
  8.  return c
  9.  
  10. #Main
  11. cadena = input('Ingrese una frase:')
  12. print('La frase "%s" tiene %d caracteres' %(cadena,cuentaCaracteres(cadena)))
  13.  

!Gracias!
Creo que de todas las formas que he hecho este ejercicio esta es la más sencilla saludos!
Código
  1. titulo= "Contar las letras de cualquier frase".capitalize() #Variable para el titulo
  2. print (titulo.center(50,"*"))#centro el titulo
  3. frc=(input("Ingresa una frase "))#se solicita la frase
  4. let=len(frc)#saco la logitud original
  5. contsig=0 #contador de letras
  6. for i in range(0,let):
  7.  
  8.     if(frc[i].isalpha()):
  9.        contsig+=1
  10. print("Numero de letras:",contsig)
  11.  
  12.  


Título: Re: [Python 3x] Contar las letras de cualquier frase
Publicado por: crack81 en 29 Enero 2018, 18:00 pm
Hola en lugar de utilizar la funcion len para calcular el tamano de la cadena simplemente puedes iterar naturalmente sobre la cadena  usando el for y python se encarga de lo demas

Código
  1. [/code#declare variable
  2. counter = 0
  3. data = "Hello World"
  4.  
  5.  
  6. for letter in data:
  7. if letter.isalpha(): counter += 1
  8.  
  9. print "The string has {0} letters".format(counter)


Título: Re: [Python 3x] Contar las letras de cualquier frase
Publicado por: erickcasita en 29 Enero 2018, 18:32 pm
Hola en lugar de utilizar la funcion len para calcular el tamano de la cadena simplemente puedes iterar naturalmente sobre la cadena  usando el for y python se encarga de lo demas

Código
  1. [/code#declare variable
  2. counter = 0
  3. data = "Hello World"
  4.  
  5.  
  6. for letter in data:
  7. if letter.isalpha(): counter += 1
  8.  
  9. print "The string has {0} letters".format(counter)

Gracias incluso se hace mas a meno el codigo:
Código
  1. def contarLetras():
  2.    titulo= "Contar las letras de cualquier frase".capitalize() #Variable para el titulo
  3.    print (titulo.center(50,"*"))#centro el titulo
  4.    frc=(input("Ingresa una frase "))#se solicita la frase
  5.    contsig=0
  6.    for i in frc:
  7.         if(i.isalpha()):
  8.            contsig+=1
  9.    print("Número de letras:",contsig)
  10.