Test Foro de elhacker.net SMF 2.1

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 (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)
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 (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)
Título: Re: [Python 3x] Contar las letras de cualquier frase
Publicado por: rub'n en 28 Enero 2018, 05:58 AM
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
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 (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)))
Título: Re: [Python 3x] Contar las letras de cualquier frase
Publicado por: erickcasita en 29 Enero 2018, 16:59 PM
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
Título: Re: [Python 3x] Contar las letras de cualquier frase
Publicado por: erickcasita en 29 Enero 2018, 17:04 PM
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)

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 (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)
Título: Re: [Python 3x] Contar las letras de cualquier frase
Publicado por: erickcasita en 29 Enero 2018, 18:32 PM
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)