[Python 3x] Contar las letras de cualquier frase

Iniciado por erickcasita, 28 Enero 2018, 03:54 AM

0 Miembros y 2 Visitantes están viendo este tema.

erickcasita

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 (python) [Seleccionar]

titulo= "Contar las letras de cualquier frase".capitalize() #Variable para el titulo
print (titulo.center(50,"*"))#centro el titulo
frc=(input("Ingresa una frase "))#se solicita la frase
let=len(frc)#saco la logitud original
cont=0 #contador para los espacios
contnum=0 #contador para los numeros
contpuc=0 #contador para los signos
suma=0 #variable para sumar los contadores
for i in range(0,let):
    if (frc[i].isspace()):
        cont+=1
    elif(frc[i].isdigit()):
        contnum+=1
    elif(frc[i] in "?¡¿*,.-_'"): #agrego los signos a discriminar (no se si hay un método)
        contpuc+=1
    suma=cont+contnum+contpuc #sumo los contadores
rpta=let-suma #al final solo lo resto a la longitud original
print("La frase tiene palabras",rpta)
"Nadie nace sabiendo, Todos aprendemos y seguimos aprendiendo."

rub'n

#1
. ^ $ * + ? { } [ ] \ | ( )  ?

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


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

erickcasita

¡Gracias! sigo leyendo un poco sobre las expresiones regulares
Código (python) [Seleccionar]

import re
titulo= "Contar las letras de cualquier frase".capitalize() #Variable para el titulo
print (titulo.center(50,"*"))#centro el titulo
frc=(input("Ingresa una frase "))#se solicita la frase
let=len(frc)#saco la logitud original
contnum=0 #contador para los numeros
contpuc=0 #contador para los signos
suma=0 #variable para sumar los contadores
for i in range(0,let):
    if(frc[i].isdigit()): #cuento los numeros
        contnum+=1
    elif(re.search("[^a-zA-Z0-9_]",frc[i])): #cuento los espacios en blanco y cualquier signo
        contpuc+=1
    suma=contnum+contpuc #sumo los contadores
rpta=let-suma #al final solo lo resto a la longitud original
print("La frase tiene palabras",rpta)
"Nadie nace sabiendo, Todos aprendemos y seguimos aprendiendo."

rub'n

#3
Cita de: erickcasita en 28 Enero 2018, 05:48 AM
¡Gracias! sigo leyendo un poco sobre las expresiones regulares
Código (python) [Seleccionar]

import re
titulo= "Contar las letras de cualquier frase".capitalize() #Variable para el titulo
print (titulo.center(50,"*"))#centro el titulo
frc=(input("Ingresa una frase "))#se solicita la frase
let=len(frc)#saco la logitud original
contnum=0 #contador para los numeros
contpuc=0 #contador para los signos
suma=0 #variable para sumar los contadores
for i in range(0,let):
   if(frc[i].isdigit()): #cuento los numeros
       contnum+=1
   elif(re.search("[^a-zA-Z0-9_]",frc[i])): #cuento los espacios en blanco y cualquier signo
       contpuc+=1
   suma=contnum+contpuc #sumo los contadores
rpta=let-suma #al final solo lo resto a la longitud original
print("La frase tiene palabras",rpta)


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


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

dariodr01

Esto es lo que quieres.
Salu2

Código (python) [Seleccionar]
def cuentaCaracteres(frase):
  c = 0
 
  for i in range(len(frase)):
    if frase[i].isalpha():
      c += 1
     
  return c
 
#Main
cadena = input('Ingrese una frase:')
print('La frase "%s" tiene %d caracteres' %(cadena,cuentaCaracteres(cadena)))

erickcasita

Cita de: rub'n en 28 Enero 2018, 05:58 AM
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
"Nadie nace sabiendo, Todos aprendemos y seguimos aprendiendo."

erickcasita

Cita de: dariodr01 en 28 Enero 2018, 15:55 PM
Esto es lo que quieres.
Salu2

Código (python) [Seleccionar]
def cuentaCaracteres(frase):
  c = 0
 
  for i in range(len(frase)):
    if frase[i].isalpha():
      c += 1
     
  return c
 
#Main
cadena = input('Ingrese una frase:')
print('La frase "%s" tiene %d caracteres' %(cadena,cuentaCaracteres(cadena)))


!Gracias!
Creo que de todas las formas que he hecho este ejercicio esta es la más sencilla saludos!
Código (python) [Seleccionar]

titulo= "Contar las letras de cualquier frase".capitalize() #Variable para el titulo
print (titulo.center(50,"*"))#centro el titulo
frc=(input("Ingresa una frase "))#se solicita la frase
let=len(frc)#saco la logitud original
contsig=0 #contador de letras
for i in range(0,let):
   
     if(frc[i].isalpha()):
        contsig+=1
print("Numero de letras:",contsig)

"Nadie nace sabiendo, Todos aprendemos y seguimos aprendiendo."

crack81

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 (python) [Seleccionar]
[/code#declare variable
counter = 0
data = "Hello World"


for letter in data:
if letter.isalpha(): counter += 1

print "The string has {0} letters".format(counter)
Si C/C++ es el padre de los lenguajes entonces ASM es dios.

erickcasita

Cita de: 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 (python) [Seleccionar]
[/code#declare variable
counter = 0
data = "Hello World"


for letter in data:
if letter.isalpha(): counter += 1

print "The string has {0} letters".format(counter)


Gracias incluso se hace mas a meno el codigo:
Código (python) [Seleccionar]

def contarLetras():
    titulo= "Contar las letras de cualquier frase".capitalize() #Variable para el titulo
    print (titulo.center(50,"*"))#centro el titulo
    frc=(input("Ingresa una frase "))#se solicita la frase
    contsig=0
    for i in frc:
         if(i.isalpha()):
            contsig+=1
    print("Número de letras:",contsig)
"Nadie nace sabiendo, Todos aprendemos y seguimos aprendiendo."