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
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)
. ^ $ * + ? { } [ ] \ | ( ) ?
Pásate por aquí Regular Expressions, incluso tu código quedara mas corto homie
https://docs.python.org/3/howto/regex.html
¡Gracias! sigo leyendo un poco sobre las expresiones regulares
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)
Cita de: erickcasita en 28 Enero 2018, 05:48 AM
¡Gracias! sigo leyendo un poco sobre las expresiones regulares
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
Esto es lo que quieres.
Salu2
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)))
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
Cita de: dariodr01 en 28 Enero 2018, 15:55 PM
Esto es lo que quieres.
Salu2
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!
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)
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
[/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)
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
[/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:
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)