Python - contar caracteres

 
Vista:
sin imagen de perfil

contar caracteres

Publicado por sor (12 intervenciones) el 29/12/2016 18:28:21
Ejercicio: Diseña un programa que lea una cadena y un número entero k y nos diga cuántas palabras tienen una longitud de k caracteres.
Mi conclusión:
1
2
3
4
5
6
7
8
9
10
11
print('Programa que lea una cadena y un entero y nos diga cuántas palabras tienen la misma longitud que el entero')
 
cadena=input('Escribe una frase: ')
k=int(input('Dame un número entero: '))
x=cadena.split()#Convierte la cadena en lista
 
for palabra in x:
    if len(palabra)==k:
        print('Hay palabras de', k, 'letras.')
    else:
        print('No hay palabras de', k, 'letras.')

Funciona pero no de forma "elegante" y no es exactamente lo que pide el ejercicio.

También se podría hacer con un programa del tipo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cadena=input('Escribe una frase: ')
while cadena!='':
    cambios=0
    anterior=' '
    for caracter in cadena:
        if caracter==' ' and anterior!=' ':
            cambios+=1
        anterior=caracter
 
    if cadena[-1]==' ':
        cambios-=1
 
    palabras=cambios+1 #Hay una palabra más que cambios de no blanco a blanco
    print('Palabras:', palabras)
 
    cadena=input('Escribe una frase: ')

O bien:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
cadena=input('Escribe una frase: ')
while cadena!='':
    cambios=0
    for i in range(1,len(cadena)):
        if cadena [i]==' ' and cadena [i-1]!=' ':
            cambios=cambios+1
 
    if cadena[-1]==' ':
        cambios-=1
 
    palabras=cambios+1
    print('Palabras', palabras)
 
    cadena=input('Escribe una frase: ')

Pero en estos dos segundos casos me hago un poco de lío o me pierdo con las líneas que tengo que insertar para contar los caracteres en las subcadenas, y me parece más sencilla (aunque menos "elegante") la solución que propongo en primer lugar.

¿A alguien se le ocurre algo o me da una pista sobre cómo hacerlo mejor? Gracias por anticipado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

contar caracteres

Publicado por kip (257 intervenciones) el 30/12/2016 06:26:55
Hola, modifique el primer codigo de acuerdo a lo que entendi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
print('Programa que lea una cadena y un entero y nos diga cuántas palabras tienen la misma longitud que el entero')
 
cadena = input('Escribe una frase: ')
k = int(input('Dame un número entero: '))
x = cadena.split()
palabras_k = []
for palabra in x:
  if (len(palabra) == k):
    palabras_k.append(palabra)
 
if (len(palabras_k) > 0):
  mas = 'as' if len(palabras_k) > 1 else 'a'
  print('Hay %s palabr%s con la longitud de %s caracteres:' % (len(palabras_k), mas, k))
  for palabra in palabras_k:
    print('Palabra: %s' % palabra)
else:
    print('No hay ninguna palabra con la longitud de %s caracteres' % k)

Es lo que buscas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

contar caracteres

Publicado por sor (12 intervenciones) el 03/01/2017 23:56:20
Sí, es lo que buscaba. Muchas gracias kip.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 10
Ha disminuido su posición en 10 puestos en Python (en relación al último mes)
Gráfica de Python

contar caracteres

Publicado por José Antonio (6 intervenciones) el 08/11/2018 03:02:46
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/python
# -*- coding: utf-8 -*-
print u'Programa para la busqueda de palabras de cierta longitud'
print u'Escribe fin, para salir.'
cadena = ' '
k = 0
while cadena != '' and k != '':
	cadena = raw_input('\nEscribe una frase: ')
	try:
		k = int(raw_input('\nDime el n\243mero de caracteres a buscar: '))
	except ValueError:
		print u'Dato erroneo.'
		continue
	if cadena == 'fin':
		break
	contar = 0
	cadena = cadena.strip().split()
	for palabra in cadena:
		if len(palabra) == k:
			contar = contar + 1
	print u'\nHay {0} palabra(s) con longitud de {1} caracteres.'.format(contar,k)
print u'\nGracias por usar el programa, Adios.'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

contar caracteres

Publicado por Jose Antonio (6 intervenciones) el 11/11/2018 01:08:04
Alguien sabe como hacer el mismo programa pero sin usar el metodo split(), es parecido al segundo ejemplo, es que estoy estudiando
el libro "introducción a la programación con python 3 de Andrés Marzal Varó" del cual sacaron el segundo ejemplo y no puedo hacer el ejercicio 158, sin usar el methodo split() ni strip()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar