Skip to content

Commit 546d464

Browse files
Add files via upload
Ejemplos y ejercicios del capítulo 4.
1 parent 8d9cfea commit 546d464

47 files changed

Lines changed: 1086 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Cap4/Ejemplo 4_1.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# -*- coding: utf-8 -*-
2+
3+
"""
4+
@author: guardati
5+
Ejemplo 4_1
6+
Ciclo for usando la función range().
7+
"""
8+
9+
# El valor por omisión para el tercer parámetro de range() es 1.
10+
for numero in range(1, 10):
11+
print(numero) # Imprime del 1 al 9.
12+
13+
# El valor por omisión para el primer parámetro de range() es 0.
14+
for j in range(4):
15+
print(j) # Imprime del 0 al 3.
16+
17+
cadena = '' # Cadena de caracteres vacía
18+
# Se usa _ cuando la variable de control no se necesita en el ciclo.
19+
for _ in range (10):
20+
cadena += '*' # Pega 10 * a la variable cadena.
21+
print(cadena) # Imprime **********
22+
23+
# En range() se especifica un incremento diferente de 1.
24+
for numero in range(1, 10, 2):
25+
print(numero) # Imprime: 1 3 5 7 y 9.
26+
27+
'''
28+
El tercer parámetro de range() es un incremento negativo o un decremento.
29+
En este caso, el valor inicial debe ser mayor que el final, para
30+
que el for se ejecute, al menos, 1 vez.
31+
'''
32+
for numero in range(10, 1, -2):
33+
print(numero) # Imprime: 10 8 6 4 y 2.
34+
35+

Cap4/Ejemplo 4_2.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
@author: guardati
4+
Ejemplo 4_2
5+
Solución del problema 4.1 sin usar ciclo.
6+
En este caso se emplea una variable por cada sueldo.
7+
"""
8+
9+
sueldo1 = float(input('Ingrese el sueldo 1: $'))
10+
sueldo2 = float(input('Ingrese el sueldo 2: $'))
11+
sueldo3 = float(input('Ingrese el sueldo 3: $'))
12+
sueldo4 = float(input('Ingrese el sueldo 4: $'))
13+
sueldo5 = float(input('Ingrese el sueldo 5: $'))
14+
sueldo6 = float(input('Ingrese el sueldo 6: $'))
15+
sueldo7 = float(input('Ingrese el sueldo 7: $'))
16+
sueldo8 = float(input('Ingrese el sueldo 8: $'))
17+
sueldo9 = float(input('Ingrese el sueldo 9: $'))
18+
sueldo10 = float(input('Ingrese el sueldo 10: $'))
19+
nomina = sueldo1 + sueldo2 + sueldo3 + sueldo4 + sueldo5 + sueldo6 + sueldo7 + sueldo8 + sueldo9 + sueldo10
20+
print('\nLa nómina que debe pagarse es: $', nomina)

Cap4/Ejemplo 4_3.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
4+
@author: guardati
5+
Ejemplo 4_3
6+
Solución del problema 4.1 sin usar ciclo.
7+
En este caso se emplea una sola variable para leer el sueldo,
8+
lo cual implica que se debe leer y sumar 10 veces.
9+
"""
10+
11+
nomina = 0
12+
sueldo = float(input('Ingrese el sueldo 1: $'))
13+
nomina += sueldo
14+
sueldo = float(input('Ingrese el sueldo 2: $'))
15+
nomina += sueldo
16+
sueldo = float(input('Ingrese el sueldo 3: $'))
17+
nomina += sueldo
18+
sueldo = float(input('Ingrese el sueldo 4: $'))
19+
nomina += sueldo
20+
sueldo = float(input('Ingrese el sueldo 5: $'))
21+
nomina += sueldo
22+
sueldo = float(input('Ingrese el sueldo 6: $'))
23+
nomina += sueldo
24+
sueldo = float(input('Ingrese el sueldo 7: $'))
25+
nomina += sueldo
26+
sueldo = float(input('Ingrese el sueldo 8: $'))
27+
nomina += sueldo
28+
sueldo = float(input('Ingrese el sueldo 9: $'))
29+
nomina += sueldo
30+
sueldo = float(input('Ingrese el sueldo 10: $'))
31+
nomina += sueldo
32+
print('\nLa nómina que debe pagarse es: $', nomina)

Cap4/Ejemplo 4_4.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
@author: guardati
4+
Ejemplo 4.4
5+
Calcula e imprime el promedio de las calificaciones de un grupo de n alumnos.
6+
Además, obtiene la calificación más alta y la más baja del grupo y las
7+
imprime junto con la matrícula del alumno que las obtuvo.
8+
9+
Solución alternativa del problema 4.4.
10+
Compare esta solución con la desarrollada por usted y con la del Programa 4_4.
11+
"""
12+
13+
total_alumnos = int(input('Ingrese la cantidad de alumnos: '))
14+
if total_alumnos > 0:
15+
print(f'\nIngrese la matrícula y la calificación del primer alumno:')
16+
matricula = int(input())
17+
calificacion = float(input())
18+
suma_calif = calificacion
19+
calificacion_mayor = calificacion # Al mayor se lo inicializa con la primer calificación.
20+
matricula_mayor = matricula # Se inicializa la matrícula con la primera leída.
21+
calificacion_menor = calificacion # Al menor se lo inicializa con la primer calificación.
22+
matricula_menor = matricula # Se inicializa la matrícula con la primera leída.
23+
for i in range(2, total_alumnos + 1): # Se leen total_alumnos - 1 en el ciclo
24+
print(f'\nIngrese la matrícula y la calificación del alumno {i}:')
25+
matricula = int(input())
26+
calificacion = float(input())
27+
suma_calif += calificacion
28+
if calificacion > calificacion_mayor:
29+
calificacion_mayor = calificacion
30+
matricula_mayor = matricula
31+
elif calificacion < calificacion_menor:
32+
calificacion_menor = calificacion
33+
matricula_menor = matricula
34+
promedio = suma_calif / total_alumnos
35+
print(f'\nPromedio de calificaciones = {promedio:.2f}')
36+
print(f'Calificación mayor = {calificacion_mayor:.2f}, obtenida por el alumno con matrícula: {matricula_mayor}')
37+
print(f'Calificación menor = {calificacion_menor:.2f}, obtenida por el alumno con matrícula: {matricula_menor}')
38+
else:
39+
print('\nNo hay datos que procesar.')
40+

Cap4/Ejemplo 4_5.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
@author: guardati
4+
Ejemplo 4_5
5+
Variante de solución del problema 4.20.
6+
Calcula e imprime la suma de los números contenidos en
7+
una cadena, los cuales deben estar separados por coma.
8+
"""
9+
10+
cadena = input('Ingrese la cadena de caracteres: ') + ','
11+
suma_numeros = 0
12+
for caracter in cadena:
13+
if caracter == ',':
14+
posicion = cadena.index(',')
15+
numero = cadena[0:posicion] # Se extrae el número que está antes de la coma.
16+
cadena = cadena[posicion + 1:] # Evita repetir el número extraído.
17+
try:
18+
suma_numeros += float(numero)
19+
except ValueError:
20+
pass # Si no es un número, no hay nada que hacer.
21+
print(f'\nLa suma de los números contenidos en la cadena es = {suma_numeros:.2f}')

Cap4/Ejemplo 4_6.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
@author: guardati
4+
Ejemplo 4_6
5+
Ciclo for con tuplas y uso del operador walrus.
6+
"""
7+
8+
# Se define una tupla formada por números enteros.
9+
numeros = (5, 12, 4, 18, 11, 3, 24, 8, 5, 20)
10+
11+
# Se itera sobre todos los elementos de la tupla.
12+
# Operador := válido a partir de Python 3.8.
13+
for num in numeros:
14+
if (cuadrado := num ** 2) > 100: # A cuadrado le asigna el cuadrado de num.
15+
print(f'El cuadrado de {num} = {cuadrado} es mayor a 100.')
16+
17+
# Equivalente a escribir:
18+
for num in numeros:
19+
cuadrado = num ** 2
20+
if cuadrado > 100:
21+
print(f'El cuadrado de {num} = {cuadrado} es mayor a 100.')
22+

Cap4/Ejemplo 4_7.py

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
@author: guardati
4+
Ejemplo 4_7
5+
Algunos usos de las instrucciones break y continue.
6+
"""
7+
8+
'''
9+
El ciclo permite hacer tantas lecturas como sean necesarias para
10+
obtener un número mayor que 0. Observe que solo cuando se cumpla
11+
esta condición se ejecutará el break interrumpiendo el ciclo.
12+
'''
13+
print('\nOpción 1: uso de break'.upper())
14+
while True:
15+
numero = int(input('Ingrese un número entero positivo: '))
16+
if numero > 0:
17+
break;
18+
19+
print('\nOpción 2: sin usar break y usando una selección'.upper())
20+
bandera = True
21+
while bandera:
22+
numero = int(input('Ingrese un número entero positivo: '))
23+
if numero > 0:
24+
bandera = False
25+
26+
print('\nOpción 3: sin usar break y usando doble lectura'.upper())
27+
numero = int(input('Ingrese un número entero positivo: '))
28+
while numero <= 0:
29+
numero = int(input('Ingrese un número entero positivo: '))
30+
31+
'''
32+
Ejemplo del uso de las instrucciones continue y break.
33+
El continue se usa para no evaluar los números fuera de rango y los pares.
34+
El break se usa para interrumpir el ciclo solo cuando el usuario ya no quiera
35+
seguir buscando números primos mayores que 100.
36+
'''
37+
print('\n\nOpción 1: uso de break y continue'.upper())
38+
while True:
39+
numero = int(input('Ingrese un número entero positivo > 100: '))
40+
# Descarta los fuera de rango y los pares.
41+
if numero <= 100 or numero % 2 == 0:
42+
continue # Inicia nuevamente el ciclo.
43+
divisor = 3
44+
limite = numero // 2
45+
while divisor <= limite and numero % divisor != 0:
46+
divisor += 2
47+
if divisor >= limite:
48+
print(f'El {numero} es un número primo')
49+
respuesta = input('Quiere evaluar otro número: SI/NO ').upper()
50+
if respuesta.upper() == 'NO':
51+
break # Interrumpe el ciclo.
52+
53+
print('\n\nOpción 2: sin usar el break y continue'.upper())
54+
respuesta = input('Quiere evaluar un número: SI/NO ').upper()
55+
while respuesta.upper() != 'NO':
56+
numero = int(input('Ingrese un número entero positivo > 100: '))
57+
# Descarta los fuera de rango y los pares.
58+
if numero > 100 and numero % 2 != 0:
59+
divisor = 3
60+
limite = numero // 2
61+
while divisor <= limite and numero % divisor != 0:
62+
divisor += 2
63+
if divisor >= limite:
64+
print(f'El {numero} es un número primo')
65+
respuesta = input('Quiere evaluar otro número: SI/NO ').upper()
66+
67+

Cap4/Programa 4_1.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
@author: guardati
4+
Problema 4.1
5+
Calcula e imprime la nómina que debe pagar una empresa por sus 10 empleados.
6+
"""
7+
8+
nomina = 0
9+
for i in range (1, 11):
10+
sueldo = float(input(f'Ingrese el sueldo {i}: $'))
11+
nomina += sueldo
12+
print('\nLa nómina que debe pagarse es: $', nomina)

Cap4/Programa 4_10.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
@author: guardati
4+
Problema 4.10
5+
Imprime, dígito por dígito, un número de 4 dígitos.
6+
"""
7+
8+
numero = int(input('Ingrese un número entero de 4 dígitos: '))
9+
if numero >= 1000 and numero <= 9999:
10+
denominador = 1000
11+
for _ in range(1, 5):
12+
digito = numero // denominador
13+
print(digito, ' ', end = '')
14+
numero = numero % denominador
15+
denominador //= 10
16+
else:
17+
print('El número ingresado no está en el rango esperado.')

Cap4/Programa 4_11.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
@author: guardati
4+
Problema 4.11
5+
Genera el número espejo de un número de 5 dígitos: a partir del dato dado
6+
se obtiene otro número con sus dígitos colocados de derecha a izquierda.
7+
"""
8+
9+
numero = int(input('Ingrese un número entero positivo de 5 dígitos: '))
10+
if numero >= 10000 and numero <= 99999:
11+
nuevo_numero = 0
12+
temporal = numero
13+
for _ in range(1, 6):
14+
digito = temporal % 10
15+
nuevo_numero = nuevo_numero * 10 + digito
16+
temporal = temporal // 10
17+
print(f'\n{numero} --> {nuevo_numero}')
18+
else:
19+
print('\nEl dato no está dentro del rango esperado.')

0 commit comments

Comments
 (0)