Iteración
Contents
1.5. Iteración#
Vamos a utilizar como sinónimos, iteración, bucle y ejecución circular
1.5.1. Un ejemplo con while
#
n = 0
while n < 5:
print(n)
n = n + 1
0
1
2
3
4
La instrucción while tiene la estructura
while (condición de ejecución):
(acción)
(condición de ejecución) es un objeto booleano, si es True
se ejecuta (acción) y se vuelve a verificar la condición (en el while
). Si no, se para la iteración.
1.5.1.1. Elementos de la iterción con while
#
Hay una condición, en este caso
n<5
, que es una expresón que tiene valores booleanos (True
oFalse
)Cuando la condición es
True
, se ejecutan todos los pasos del bloquewhile
Se comprueba la condición de nuevo
Se repite la ejecución del bloque
while
hasta que la condición esFalse
Tiene que haber una variable con las siguienes características/comportamiento que:
se inicia,
n=0
,se modifica en cada iteración,
n = n + 1
,en algún momento el nuevo valor de
n
hace que la expresión de la condición tenga valorFalse
Observaciones:
Para el bucle while no es necesario indicar explícitamente el número de veces que se realiza la acción. Después veremos como hacer esto con un iterable
Si (condición de ejecución) toma siempre el valor True, resultará un bucle infinito. Para evitar esto:
un bucle while debe tener una variable de control que se actualiza en cada iteración
(condición de ejecución) debe tomar el valor False después de un número finito de pasos ó que aparezca una instrucción break
Ejemplo
# contador es la variable de control
# el contador se actualiza en cada iteración
# contador < 5 es la condición de ejecución
contador = 0
while contador < 5:
print('hola')
contador += 1
hola
hola
hola
hola
hola
1.5.2. La instrucción for
#
for n in range(5):
print(n)
0
1
2
3
4
Observad el sangrado y los colores de las palabras que aparecen en el programa
1.5.2.1. Estructura de la iteración#
1.5.2.2. La iteración for
#
La iteración for tiene la estructura:
for u in I:
(acción)
donde I es un iterable: un conjunto ordenado que se puede recorrer.
En Python son iterables las estructuras que ya hemos visto:
las cadenas
el conjunto range(m,n,q)
y otras que veremos después:
las listas
las tuplas
los diccionarios
1.5.2.2.1. Elementos de una iteración con for
:#
en cada paso del proceso circular, la variable
n
cambia de valorla primera vez, la variable toma el primer valor del rango de números enteros desde el cero hasta el 5 (sin incluir el cinco) ->
n=0
la siguiente vez, la variable toma el siguiente valor ->
n=1
etc.
el proceso acaba cuando
n=4
que es el último valor que se imprime (cuandon=5
se sale del bucle y no se ejecuta el bloque de líneas consecutivas que están sangradas debajo defor
)se puede utilizar otra secuencia ordena e indexada, otro iterable, diferente de
range()
1.5.3. Iteración con cadenas#
texto = 'Estamos en Marte'
i = 0
while i < len(texto):
print(texto[i])
i = i + 1
E
s
t
a
m
o
s
e
n
M
a
r
t
e
for letra in 'Nos vamos a Júpiter':
print(letra)
N
o
s
v
a
m
o
s
a
J
ú
p
i
t
e
r
Ejemplos 1
for u in 'hola':
print(u)
h
o
l
a
Ejemplos 2
I = 'escuela'
for letra in I:
print(letra)
e
s
c
u
e
l
a
Ejemplos 3
n = 5
for u in range(n):
print(n*'0 ')
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
Ejemplos 4
# dibujar un cuadrado de 0's de lado n
n = 5
for u in n*'a': # esto es un apaño, luego con range será más natural
print(n*'0 ')
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
1.5.4. Uso de range()
#
1.5.4.1. Enlace#
for numero in range(5):
print(numero)
0
1
2
3
4
for numero in range(1,5):
print(numero)
1
2
3
4
for numero in range(1,5,2):
print(numero)
1
3
for numero in range(-5,5,2):
print(numero)
-5
-3
-1
1
3
for numero in range(10,7,-1):
print(numero)
10
9
8
type(range(2))
range
print(range(2))
range(0, 2)
Uso
range(m,n,p)
\(\longrightarrow\{m,m+p,m+2p,...\}\)
Ejemplos
range(1,6,1)
\(\longrightarrow\{1,2,3,4,5\}\)range(2,9,1)
\(\longrightarrow\{2,3,4,5,7,8\}\)range(2,9,2)
\(\longrightarrow\{2,4,6,8\}\)range(9,2,-1)
\(\longrightarrow\{9,8,7,6,5,4,3\}\)range(2,7)
\(\longrightarrow\{2,3,4,5,6\}\)
cuando \(m=0\) y \(p=1\) se escribe range(n)
range(4)
\(\longrightarrow\{0,1,2,3\}\)range(7)
\(\longrightarrow\{0,1,2,3,4,5,6\}\).
El objeto range
proporciona una secuencia ordenada de números enteros: es un iterable
for i in range(5):
print(i)
0
1
2
3
4
El iterable range resulta muy cómodo para repetir una misma acción varias veces:
n = 6
for u in range(n):
print('así repetimos una acción')
así repetimos una acción
así repetimos una acción
así repetimos una acción
así repetimos una acción
así repetimos una acción
así repetimos una acción
Ejemplo 1
Calcular la suma $\(1+2+3+\cdots+n\)$
Usamos un acumulador para ir guardando las sumas parciales
n = 10
suma = 0
for u in range(1,n+1):
suma = suma + u
print(suma)
1
3
6
10
15
21
28
36
45
55
En realidad no es necesario imprimir las sumas parciales, lo hemos hecho para mostrar como funciona el algoritmo. Bastaría con
# observa la importancia del sangrado al comparar
# con el script anterior
n = 10
suma = 0
for u in range(1,n+1):
suma = suma + u
print(suma)
55
Ejemplo 2
Sumar los número pares menores que 10
# Sumar los número pares menores que 10
suma = 0
for numero in range(0,10,2):
suma = suma + numero
print(suma)
20
1.5.5. Bucles infinitos#
Los programadores suelen tener un problema con las instrucciones de un champú: ¿cuántes veces hay que repetir el proceso “lavar, aclarar, repetir”? En las instrucciones no hay una variable de la iteración que diga cuantas veces hay que ejecutar este proceso.
Veamos un ejemplo de bucle infinito mas simple
while True:
print('¡Basta!')
n = 1
while n < 2:
print(n)
n -= 1
1.5.6. Interumpir la ejecución circular de un bucle: break
#
Cómo interrumpir un bucle antes que se llegue a la parada.
Veamos un ejemplo simple: queremos escribir un programa que recoja información del usuario hasta que escriba ‘acabado’.
while True:
palabra = input('Escriba una palabra: ')
if palabra == 'acabado':
break
print(' ' + palabra)
print('')
print(' Se acabó')
Veamos un ejemplo con un contador.
# versión alternativa del anterior con break
contador = 0
while True:
print('hola')
contador += 1
if contador >= 5:
break
hola
hola
hola
hola
hola
Observación: Un bucle while se puede escribir siempre de dos formas equivalentes:
while (condición de ejecución):
(acción)
ó
while True:
(acción)
if not (condición de ejecución):
break
El valor not (condición de ejecución) recibe el nombre de condición de finalización.
Ejemplo
for letra in 'Python':
if letra == 'h':
break
print('Letras:', letra)
Letras: P
Letras: y
Letras: t
Se interumpe el bucle en el que está metida la instrucción break
. Si se tratara de bucles anidados, pararía en el bucle en el que se encuentra break
y seguiría con el bucle superior.
madrid = 'Madrid'
barcelona = 'Barcelona'
for letra_1 in madrid:
print("Letra de Madrid:" ,letra_1)
for letra_2 in barcelona:
if letra_2 == 'c':
break
print("Letra de Barcelona:" ,letra_2)
Letra de Madrid: M
Letra de Barcelona: B
Letra de Barcelona: a
Letra de Barcelona: r
Letra de Madrid: a
Letra de Barcelona: B
Letra de Barcelona: a
Letra de Barcelona: r
Letra de Madrid: d
Letra de Barcelona: B
Letra de Barcelona: a
Letra de Barcelona: r
Letra de Madrid: r
Letra de Barcelona: B
Letra de Barcelona: a
Letra de Barcelona: r
Letra de Madrid: i
Letra de Barcelona: B
Letra de Barcelona: a
Letra de Barcelona: r
Letra de Madrid: d
Letra de Barcelona: B
Letra de Barcelona: a
Letra de Barcelona: r
1.5.7. Similitudes y diferencias: for
y while
#
|
|
---|---|
número de iteraciones prefijadas |
número de iteraciones no prefijadas |
se puede acabar antes con |
se puede acabar antes con |
utiliza como contador un iterable |
se puede utilizar un contador pero hay que inicializarlo antes e incrementarlo dentro del bucle en el bloque que se ejecuta hasta la condición toma el valor |
un |
puede no ser posible reescribir un |
1.5.8. Instrucción continue
#
La palabra clave continue
nos permite saltar un bloque de ejecución.
Cómo dejar de ejecutar una vez el bloque de sentencias del bucle.
Veamos un ejemplo: hay que escribir un programa que no imprima la letra a
de una palabra que se pide al usuario.
palabra = input('Escribe una palabra: ')
for letra in palabra:
if letra == 'a':
continue
print(letra)
1.5.9. Acumuladores#
Un acumulador es una variable cuyo valor se modifica (actualiza) en cada paso de una iteración. El valor (contenido) inicial del acumulador se define antes de comenzar la iteración (inicialización).
Ejemplo 1
¿Qué hace este programa?
I = 'casa de muñecas'
a = 0
for u in I:
a = a + 1
print(a)
15
El acumulador de este ejemplo, que se modifica añadiéndole 1, recibe el nombre de contador. Se inicializa con 0.
Ejemplo 2
¿Qué hace este programa?
I = 'casa de muñecas'
a = 0
for u in I:
if u != ' ':
a = a + 1
print(a)
13
¿y este?
I = 'casa de muñecas'
a = 0
for u in I:
if u == ' ':
a = a + 1
print(a)
2
Ejemplo 3
texto = 'espectrómetro'
a = ''
for u in texto:
a = a + u
print(a) # ¿qué pasa si print(a) no está sangrado?
e
es
esp
espe
espec
espect
espectr
espectró
espectróm
espectróme
espectrómet
espectrómetr
espectrómetro
En el ejemplo anterior la variable a es un acumulador, que se inicializa con la cadena vacía ''
y se actualiza concatenándola con las letras sucesivas de texto.
Ejemplo 4
Podemos calcular la longitud de una cadena sin usar la función len()
#uso típico de un contador
texto = 'las abejas pierden su aguijón al picar y mueren'
contador = 0
for u in texto:
contador += 1
print(contador)
47
Ejemplo 5
Algo más complicado - contar las vocales de un texto
Primera aproximación
# contamos cuantas letras 'a' hay en el texto
texto = 'Estuvieron cavando durante tres días, pero no lo encontraron'
contador = 0
for u in texto:
if u == 'a':
contador = contador + 1
print('a', '-->', contador)
a --> 5
Segunda aproximación
# Doble iteración
texto = 'Estuvieron cavando durante tres días, pero no lo encontraron'
vocales = 'aeiou'
for i in vocales:
contador = 0
for u in texto:
if u == i:
contador = contador + 1
print(i, '-->', contador)
a --> 5
e --> 5
i --> 1
o --> 7
u --> 2
Ejercicio
Contar las vocales, teniendo en cuenta que pueden estar en mayúsculas o tener tilde.
Por ejemplo, de 'Antelación a su época'
debe resultar:
a –> 3
A –> 1
e –> 1
é –> 1
i –> 1
o –> 1
ó –> 1
u –> 1
1.5.10. Ejemplos#
Ejemplo 1
Modificación de una cadena: Dado un texto, imprimir la cadena de símbolos que se obtiene eliminando los espacios entre palabras.
# usamos un acumulador nuevo_texto
# inicializamos nuevo_texto con la cadena vacía
# actualizamos el contador concatenando las letras del texto dado,
# si aparece un espacio no hacemos nada (concatenar cadena vacía)
texto = 'quitar los espacios de esta forma es realmente sencillo'
nuevo_texto = ''
for u in texto:
if u != ' ':
nuevo_texto += u
print(nuevo_texto)
quitarlosespaciosdeestaformaesrealmentesencillo
Ejemplo 2
Imprimir los números enteros del 1 al 10
print("1")
print("2")
print("3")
print("4")
print("5")
print("6")
print("7")
print("8")
print("9")
print("10")
1
2
3
4
5
6
7
8
9
10
n=1
while n<11:
print(n)
n+=1
1
2
3
4
5
6
7
8
9
10
Ejemplo 3
Imprimir los pares desde 0 hasta 20
n=0
while n<21:
if n%2==0:
print(n)
n+=1
0
2
4
6
8
10
12
14
16
18
20
n=0
while n<21:
print(n)
n+=2
0
2
4
6
8
10
12
14
16
18
20
Ejemplo 4
Imprimir la palabra hola 10 veces
n=0
while n<10:
print("hola")
n+=1
hola
hola
hola
hola
hola
hola
hola
hola
hola
hola
for i in range(10):
print("hola")
hola
hola
hola
hola
hola
hola
hola
hola
hola
hola
Ejemplo 5
Imprimir enteros desde 0 hasta 10
for n in range(11):
print(n)
0
1
2
3
4
5
6
7
8
9
10
Ejemplo 6
Imprimir los pares del 0 al 20
for i in range(11):
print(2*i)
0
2
4
6
8
10
12
14
16
18
20
for i in range(21):
if i%2==0:
print(i)
0
2
4
6
8
10
12
14
16
18
20
for i in range(0,21,2):
print(i)
0
2
4
6
8
10
12
14
16
18
20
Ejemplo 7
Sumar los naturales del 1 al 10. ¡creamos una variable para acumular!
suma = 0
for i in range(11):
suma+=i
print(suma)
55
Ejemplo 8
Genera código que produce la siguiente salida usando while
: 2, 4, 6, 8, 10, ¡Adiós!
num = 2
while num <= 10:
print(num)
num += 2
print("¡Adiós!")
2
4
6
8
10
¡Adiós!
Otra forma
num = 2
while num < 11:
print(num)
num += 2
print("¡Adiós!")
2
4
6
8
10
¡Adiós!
Otra forma
num = 0
while True:
num += 2
print(num)
if num >= 10:
print('¡Adiós!')
break
2
4
6
8
10
¡Adiós!
Otra forma
num = 1
while num <= 10:
if num % 2 == 0:
print(num)
num += 1
print('¡Adiós!')
2
4
6
8
10
¡Adiós!
Ejemplo 9
Genera código que produce la siguiente salida usando for
: 2, 4, 6, 8, 10, ¡Adios!
for p in range(2,11,2):
print(p)
print('¡Adiós!')
2
4
6
8
10
¡Adiós!
Otra forma
for cont in range(11):
if cont != 0 and cont % 2 == 0:
print(cont)
print('¡Adiós!')
2
4
6
8
10
¡Adiós!
Otra forma
for cont in range(2, 12, 2):
print(cont)
print('¡Adiós!')
2
4
6
8
10
¡Adiós!
Ejemplo 10
Genera código que produce la siguiente salida: 0, 3, 6, 9, 12, ¡Adios!
for num in range(0,13,3):
print(num)
print('!Adiós¡')
0
3
6
9
12
!Adiós¡
*Ejemplo 11
Genera código que produce la siguiente salida: 3, 7, 11, 15, 19, ¡Adios!
for num in range(3,20,4):
print(num)
print('!Adiós¡')
3
7
11
15
19
!Adiós¡
Ejemplo 12
Genera código que produce la siguiente salida: -3, 2, 7, 12, 17, ¡Adios!
for num in range(-3,18,5):
print(num)
print('!Adiós¡')
-3
2
7
12
17
!Adiós¡
Ejemplo 13
Genera código que produce la siguiente salida: 17, 12, 7, 2, -3, ¡Adios!
for num in range(17,-4,-5):
print(num)
print('!Adiós¡')
17
12
7
2
-3
!Adiós¡
Ejemplo 14
Calcular la suma de todos los números entre p
y q
, ambos incluidos
p = int(input('Damen un número: '))
q = int(input('Damen un número mayor que el anterior: '))
suma = 0
for m in range(p, q + 1):
suma += m
#print('La suma de todos los enteros entre los números ' + str(p) + ' y ' + str(q) + ' es '\
# + str(suma))
print('La suma de todos los enteros entre los números', p, 'y', q, 'es', suma)
Otro código
p = int(input('Dame un número: '))
q = int(input('Dame un número mayor que el anterior: '))
suma = 0
contador = q - p + 1
while contador > 0:
suma += p
p += 1
#print(p)
contador -= 1
print(suma)
Ejemplo 15
Calcular el factorial de un número
p = int(input('Dame un número que voy a calcular su factorial: '))
factorial = 1
for m in range(1, p+1):
factorial *= m
print('El factorial de ' + str(p) + ' es ' + str(factorial))
Ejemplo 16
Escribir el código que calcule el cuadrado de un número entero x
mediante x
sumas. El progama debe escribir, si x=5
, ‘El cuadrado de 5 es 25’
\(5^2 = 5*5 = 5 + 5 + 5 + 5 + 5\)
p = int(input('Dame un número entero, voy a calcular su cuadrado mediante sumas: '))
cuadrado = 0
for m in range(p):
cuadrado += p
print('El cuadrado de ' + str(p) + ' es ' + str(cuadrado))
num = int(input('Teclea un número entero: '))
rsltd = 0
iteraciones = num
while iteraciones != 0:
rsltd += num
iteraciones -= 1
print('En cuadrado de ' + str(num) + ' es ' + str(rsltd))
Si el entero fuera negativo
num = int(input('Teclea un número entero: '))
rsltd = 0
num1 = 0
if num < 0:
num1 = -num
else:
num1 = num
iteraciones = num1
while iteraciones != 0:
rsltd += num1
iteraciones -= 1
print('En cuadrado de ' + str(num) + ' es ' + str(rsltd))
num = int(input('Teclea un número entero: '))
rsltd = 0
if num < 0:
num1 = -num
else:
num1 = num
for p in range(num1):
rsltd += num1
print('En cuadrado de ' + str(num) + ' es ' + str(rsltd))
Ejemplo 17
Imprimir los caracteres de una cadena de caracteres
#Primer intento
palabra = "hola"
for i in range(len(palabra)):
print(palabra[i])
h
o
l
a
palabra[3]
'a'
palabra = "hola"
for i in palabra:
print(i)
h
o
l
a
Ejemplo 18
Calcular el número de caracteres de una cadena
cadena="hola, buenos días"
contador=0
for i in cadena:
contador+=1
print(contador)
17
len(cadena)
17
Ejemplo 19
Imprimir el número de caracteres de una cadena excluyendo los espacios
cadena="hola, buenos días"
contador=0
for i in cadena:
if i!=" ":
contador+=1
print(contador)
15
Ejemplo 20
Reemplazar las aes minúsculas de una cadena de caracteres por aes mayúsculas
cadena="hola, buenos días"
cadenanueva=""
for i in cadena:
if i=="a":
cadenanueva+="A"
else:
cadenanueva+=i
print(cadenanueva)
holA, buenos díAs
Ejemplo 21
Contar palabras de una cadena de caracteres
cadena="hola, buenos días"
numpalabras=1
for i in cadena:
if i==" ":
numpalabras+=1
print(cadena, " tiene",numpalabras," palabras" )
hola, buenos días tiene 3 palabras
*Ejemplo 22
Introducir con input el numero del DNI. Imprimimos la suma de los dígitos
x=input("Escribe el número de tu DNI")
suma=0
for i in x:
suma+=int(i)
print("la suma de los dígitos de tu DNI es",suma)
Ejemplo 23
A la variable cadena
se le ha asignado una cadena. Escribir un programa que imprima la frase “si hay espacio” cuando en cadena haya algún espacio
cadena="hola como estás?"
for i in cadena:
if i==" ":
print("si hay espacios")
si hay espacios
si hay espacios
cadena="hola como estás?"
for i in cadena:
if i==" ":
print("si hay espacios")
break
si hay espacios
Ejemplo 24
A la variable cadena
se le ha asignado una cadena. Escribir un programa que imprima la frase “si hay espacio” cuando en cadena haya algún espacio y “no hay espacio” cuando en cadena no haya ningún espacio
for i in cadena:
if i==" ":
print("si hay espacio")
break
else:
print("no hay espacio")
no hay espacio
no hay espacio
no hay espacio
no hay espacio
si hay espacio
cadena="holacomoestás "
if " " in cadena:
print("si hay espacio")
else:
print("no hay espacio")
si hay espacio
cadena="holacomoestás?"
espacio=False
for i in cadena:
if i==" ":
print("si hay espacio")
espacio=True
break
if espacio==False:
print("no hay espacio")
no hay espacio
cadena="hola como estás?"
espacio="no"
for i in cadena:
if i==" ":
espacio="si"
print(espacio+" hay espacio")
si hay espacio
Ejemplo 25
A la variable numeros se le asigna una cadena. Escribir un programa que imprima la cantidad de unos que contiene.
numeros = 'a1yu11.0;)1klm1'
contador = 0
for u in numeros:
if u == '1':
contador += 1
print(contador)
5
Ejemplo 26
A la variable numeros se le asigna una cadena. Escribir un programa que imprima True si solo contiene unos o ceros y False en caso contrario
numeros = '100.1'
binario = True
for u in numeros:
if not(u == '0' or u == '1'):
binario = False
break
print(binario)
False
Ejemplo 27
Dado un texto, queremos convertir las vocales con tilde a vocales sin tilde.
Para ello, buscamos cada una de los caracteres á, é, í, ó, ú, ü y los sustituimos por a, e, i, o, u, u respectivamente (y también las mayúculas)
texto = input('Introduzca el texto: ')
vocales_con_tildes = 'áéíóúüÁÉÍÓÚÜ'
vocales_sin_tildes = 'aeiouuAEIOUU'
for i in range(len(vocales_con_tildes)):
texto_aux = ''
for s in texto:
if s == vocales_con_tildes[i]:
texto_aux += vocales_sin_tildes[i]
else:
texto_aux += s
texto = texto_aux
print(texto)
Otra codificación
texto = input('Introduzca el texto: ')
vocales_sin_tilde = 'aeiouuAEIOUU'
vocales_con_tilde = 'áéíóúüÁÉÍÓÚÜ'
texto_nuevo = ''
for letra in texto:
if letra not in vocales_con_tilde:
texto_nuevo += letra
else:
for indice in range(len(vocales_con_tilde)):
if letra == vocales_con_tilde[indice]:
texto_nuevo += vocales_sin_tilde[indice]
print(texto_nuevo)
Ejemplo 28 ¶ Escribir un programa que diga si una secuencia de letras (subcadena) dada aparece en un texto dado.
texto = input('Introduzca el texto: ')
palabra = input('Introduzca la palabra: ')
if palabra in texto:
print('Sí la contiene')
else:
print('No la contiene')
Ejemplo 29
Determinar el número de veces que una secuencia de caracteres aparece en una palabra. Primero generar el código en el caso de que la secuencia sea ‘bob’. Si la palabra es 'azcbobobegghakl'
debe producir la siguiente salida:
Escribe una palabra, voy a determinar cuantas veces aparece la seccuencia "bob": azcbobobegghakl
En la palabra "azcbobobegghakl" aparece 2 veces la secuencia "bob"
palabra = 'azcbobobegghaklbob'
parte = 'bob'
contador = 0
for indice in range(len(palabra)-len(parte) +1):
if palabra[indice: (indice + len(parte))] == parte:
contador += 1
print(contador)
3
observad que
'01234'[3:7]
'34'
palabra = input('Escribe una palabra, voy a determinar cuantas veces aparece la seccuencia\
"bob": ')
contador = 0
for p in range(len(palabra)):
if palabra[p:p+3] == 'bob':
contador += 1
print('En la palabra ' + '"' + palabra + '"' + ' aparece ' + str(contador) + \
' veces la secuencia "bob"')
Ahora el código para cualquier cadena
texto = input('Escribe un texto, voy a determinar cuantas veces aparece la secuencia\
que escribirás a continuación: ')
secuencia = input('Escribe una secuencia de caracteres: ')
contador = 0
#for p in range(len(texto) - len(secuencia) -1):
for p in range(len(texto)):
if texto[p:p+len(secuencia)] == secuencia:
contador += 1
print('En el texto ' + '"' + texto + '"' + ' aparece ' + str(contador) + \
' veces la secuencia ' + '"' + secuencia + '"')
Ejemplo 30
Escribir un programa que encuentre las letras comunes a dos palabras dadas.
palabra1 = 'holapqcrsts'
palabra2 = 'hlpace'
letras_comunes = ''
contador = 0
for letra in palabra1:
if letra in palabra2:
letras_comunes += letra
contador += 1
print(letras_comunes)
print(contador)
hlapc
5
texto_1 = input('Introduzca el primer texto: ')
texto_2 = input('Introduzca el segundo texto: ')
temp = ''
for s in texto_1:
if (s in texto_2) and (s not in temp):
temp += s
for u in temp:
print(u)
Ejemplo 31
Escribir un programa que determine que letras no aparecen en un texto dado.
texto = input('Introduzca el primer texto ')
alfabeto = 'abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNOPQRSTáéíóúüÁÉÍÓÚÜ'
temp = ''
for s in alfabeto:
if s not in texto:
temp += s
for u in temp:
print(u)
Ejemplo 32
Escribir un programa que dado un texto, determine cual es la letra que aparece con mayor frecuencia
texto = input('Introduzca el texto: ')
letras = 'abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNOPQRSTáéíóúüÁÉÍÓÚÜ'
letras_repetidas = ''
contador = 0
for letra1 in letras:
contador_interno = 0
for letra2 in texto:
if letra2 == letra1:
contador_interno += 1
if contador_interno > contador:
contador = contador_interno
letra_más_frecuente = letra1
print('la letra más fecuente es ' + letra_más_frecuente)
Igual que antes pero devolviendo también la frecuencia con la que aparece la letra
texto = input('Introduzca el texto: ')
alfabeto = 'abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNOPQRSTáéíóúüÁÉÍÓÚÜ'
frecuencia = 0
for s in alfabeto:
contador = 0
for k in texto:
if k == s:
contador += 1
if contador > frecuencia:
letra = s
frecuencia = contador
# letra, frecuencia = s, contador
print('La letra más frecuente es la ' + letra + '. Aparece ' + str(frecuencia) + ' veces.')
Ejemplo 33
Escribir un programa que dado un texto, determine la frecuencia de las letras que incluye. Debe producir una salida de la siguiente forma:
Introduzca el texto: nada
Frecuencia de las letras en el texto
a --- 2 veces
d --- 1 veces
n --- 1 veces
texto = input('Introduzca el texto: ')
letras = 'abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNOPQRSTáéíóúüÁÉÍÓÚÜ'
print('Frecuencia de las letras en el texto')
for letra in letras:
contador = 0
for s in texto:
if s == letra:
contador += 1
if contador > 0:
print(letra + ' --- ' + str(contador) + ' veces')
Ejemplo 34
Escribir un programa que dada un texto, determine la frecuencia de las letras que incluye y escriba las letras repetidas. Debe producir una salida de la siguiente forma:
Introduzca el texto: nada
Frecuencia de las letras en el texto
a --- 2 veces
d --- 1 veces
n --- 1 veces
Letras repetidas
a
texto = input('Introduzca el texto: ')
letras = 'abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNOPQRSTáéíóúüÁÉÍÓÚÜ'
letras_repetidas = ''
print('Frecuencia de las letras en el texto')
for letra1 in letras:
contador = 0
for letra2 in texto:
if letra1 == letra2:
contador += 1
if contador > 0:
print(letra1 + ' --- ' + str(contador) + ' veces')
if contador > 1:
letras_repetidas += letra1
print('Letras repetidas')
print(letras_repetidas)
Otra codificación
texto = input('Introduzca el texto: ')
alfabeto = 'abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNOPQRSTáéíóúüÁÉÍÓÚÜ'
print('Frecuencia de las letras en el texto')
temp = ''
for letra in alfabeto:
contador = 0
for s in texto:
if s == letra:
contador += 1
if contador > 0:
print(letra + ' --- ' + str(contador) + ' veces')
if contador > 1:
temp += letra
print()
print('Letras repetidas')
for u in temp:
print(u)
1.5.11. Ejercicios#
En los siguientes ejercicios, escribe un script que realice las acciones que se indican a continuación.
Cada ejercicio debe hacerse de tres formas: usando for, while y while True.
En los siguientes enunciados \(N\) es un número positivo.
Pregunta una palabra o texto y nos dice cuantas letras tiene
Pide el valor de \(N\) y un texto e imprime las \(N\) primeras letras del texto.
Pide el valor de \(N\) e imprime \(N\) veces la palabra HOLA.
Pide el valor de \(N\) y un símbolo e imprime un cuadrado de lado \(N\) con el símbolo.
Pide el valor de \(N\) e imprime los números de 1 a \(N\).
Pide el valor de \(N\) e imprime los números pares menores que \(N\).
Pide el valor de \(N\) e imprime la suma de los números de 1 a \(N\).
Imprime el mayor valor entero de \(x\) para el cual \(x^2-16x-3<0\).
(C) Pide una palabra de cinco letras y una letra e imprime Sí si palabra introducida contiene la letra y No en caso contrario.
Pide un carácter por teclado. Si el carácter introducido es \(1\) vuelve a pedir un carácter, en caso contrario, termina
Pide el valor de \(N\) e imprime los múltiplos de 3 menores que \(N^2\).
Pide una palabra y e imprime el índice de la primera letra e en la palabra.
Pide una palabra e imprime los índices de todas las letras e que contiene la palabra.
Pide una palabra e imprime la palabra resultante de cambiar las letras e por Ç.
Pide un número real positivo \(x\) e imprime el mayor entero \(N\) tal que \(N^2 < x\).
Pide una palabra de cinco letras e imprime la palabra resultante de cambiar las letras a por X en la palabra introducida.
Pide una palabra de seis letras y una letra e imprime el número de veces que la letra está contenida en la palabra introducida.
Pide una palabra de seis letras e imprime el número de vocales que contiene.
Pide un texto e imprime la tabla de frecuencia de las vocales en el texto.
Pide una palabra de seis letras e imprime la palabra dejando un espacio entre sus caracteres. Por ejemplo, si introducimos Anabel debe imprimir A n a b e l
Pide una palabra de no más de seis letras e imprime la palabra dejando un espacio entre sus caracteres. ¿En qué consiste la diferencia con el ejercicio anterior?
Pide el valor de \(N\) e imprime Sí si \(N\) es el cuadrado de un número entero, y No en caso contrario.
(C) Un trabajador comienza su vida laboral en una empresa con un salario \(S\). Este salario se incrementa cada año un 2%. Además, cada tres años se incrementa en \(t\) euros (bonificación por antiguedad) y cada cinco años en \(q\) euros (bonificación por formación). Escribir un programa que pida los valores de \(S\), \(t\), \(q\) y \(N\) e imprima el salario del trabajador al cabo de \(N\) años.
(C) Como en el caso anterior, escribir un programa que pida los valores de \(S\), \(t\), \(q\) y \(M\) e imprima el número de años necesarios para que el trabajador alcance el salario \(M\).
Escribir un programa que cuente las palabras de un texto dado.