Códigos Python: Ejercicios Resueltos y Explicados

Ejercicio 1: Cálculo de Cuadrante y Rotación de Vectores

Este programa solicita al usuario que ingrese las coordenadas x e y de un vector y determina el cuadrante en el que se encuentra. Luego, pide un ángulo para rotar el vector y calcula el cuadrante resultante después de la rotación.

# -*- coding: utf-8 -*-
# Programa que solicita al usuario ingresar las coordenadas x,y de un vector,
# para indicar el cuadrante de dicho vector.
# Luego, solicita el ingreso de un ángulo para rotar el vector. Una vez calculado
# el vector rotado, el programa indica al usuario en qué cuadrante quedó el vector
import math
x = float(input("Ingrese x: "))
y = float(input("Ingrese y: "))

if x > 0 and y > 0:
print("Primer cuadrante")
elif x < 0 and y > 0:
print("Segundo cuadrante")
elif x < 0 and y < 0:
print("Tercer cuadrante")
elif x > 0 and y < 0:
print("Cuarto cuadrante")
if x < 0.001 and x > -0.001:
if y > 0.001:
print("Sobre el eje Y positivo")
elif y < -0.001:
print("Sobre el eje Y negativo")
else:
print("Sobre el origen")
if y < 0.001 and y > -0.001:
if x > 0.001:
print("Sobre el eje X positivo")
elif x < -0.001:
print("Sobre el eje X negativo")
Tg = float(input("Ingrese T (en grados): "))
Tr = math.radians(Tg)
R = [[math.cos(Tr), -math.sin(Tr)], [math.sin(Tr), math.cos(Tr)]]
V = [x, y]
V2 = [R[0][0] * V[0] + R[0][1] * V[1], R[1][0] * V[0] + R[1][1] * V[1]]
print(V2)
if V2[0] > 0 and V2[1] > 0:
print("Primer cuadrante")
elif V2[0] < 0 and V2[1] > 0:
print("Segundo cuadrante")
elif V2[0] < 0 and V2[1] < 0:
print("Tercer cuadrante")
elif V2[0] > 0 and V2[1] < 0:
print("Cuarto cuadrante")
if V2[0] < 0.001 and V2[0] > -0.001:
if V2[1] > 0.001:
print("Sobre el eje Y positivo")
elif V2[1] < -0.001:
print("Sobre el eje Y negativo")
else:
print("Sobre el origen")
if V2[1] < 0.001 and V2[1] > -0.001:
if V2[0] > 0.001:
print("Sobre el eje X positivo")
elif V2[0] < -0.001:
print("Sobre el eje X negativo")

Ejercicio 2: Sistema de Retroalimentación

Este programa simula un sistema de retroalimentación donde una señal ‘a’ ingresa y se divide en etapas B y C, con porcentajes ‘b’ y ‘c’ retornando a la etapa A. Calcula la señal de salida de las etapas A y B.

import numpy as np

b = float(input("Desvío B: "))

A = [[0, 1, 0, 0, -1], [0, 1, -1, 1, -1], [1, 0, -1, 1, 0], [0, 0, -float(input("Desvío C: ")), 1, 0], [0, b, 0, b, -1]]

B = [float(input("Ingrese A: ")), 0, 0, 0, 0]

X = np.linalg.solve(A, B)

print("Salida de A: " + str(X[1]))
print("Salida de B: " + str(X[2]))

print(X)

Ejercicio 3: Cálculo de Costos de Producción de Autos

Este programa calcula el costo total de producción de una fábrica de autos que produce tres modelos: sedán, camioneta y económico. Considera las unidades de materiales, personal y transporte necesarios para cada modelo, así como el costo unitario de cada recurso.

import numpy as np
A = [[7, 8, 5], [10, 9, 7], [3, 4, 2]]
print("Ingrese cantidades construidas:")

B = [float(input("Sedanes: ")), float(input("Camionetas: ")), float(input("Económicos: "))]
costos = [6, 12, 3]

X = np.dot(A, B)

#print(X)

T = np.dot(X, costos)

print("Costo total: " + str(T))

Ejercicio 4: Registro y Análisis de Sismos

Este programa registra la cantidad de sismos ocurridos durante un mes, clasificados por día y franja horaria (mañana, tarde, noche). Luego, genera un resumen con estadísticas por día, franja horaria y quincena, incluyendo el día con más sismos y advertencias por sismos consecutivos en la noche y mañana siguiente.

import numpy as np
datos = np.zeros([30, 3])

momentos = np.zeros([3])

num = np.zeros([30])

resumen = np.zeros([2, 3])
dia = int(input("Día del mes: "))

while dia != 0:
cantidad = int(input("Cantidad de sismos: "))
hora = int(input("Hora del día: "))
if hora >= 7 and hora < 12:
fila = 0
elif hora >= 12 and hora < 20:
fila = 1
else:
fila = 2
if datos[dia - 1][fila] != 0:
print("Ya hay un dato en el día " + str(dia) + " y " + str(hora))
else:
datos[dia - 1][fila] = cantidad
num[dia - 1] = num[dia - 1] + cantidad
momentos[fila] = momentos[fila] + cantidad
if dia >= 1 and dia <= 19:
fr = 0
elif dia >= 20:
fr = 1
resumen[fr][fila] = resumen[fr][fila] + cantidad
dia = int(input("Día del mes: "))

print("Resumen del mes")
print("-----------------")
maxCantidad = -1
for d in range(30):
if num[d] > 0:
print("Día " + str(d + 1))
p1 = 100 * datos[d][0] / num[d]
p2 = 100 * datos[d][1] / num[d]
p3 = 100 * datos[d][2] / num[d]
print("\tTotal " + str(num[d]) + ": " + str(p1) + "/" + str(p2) + "/" + str(p3))
if num[d] > maxCantidad:
maxCantidad = num[d]

print("Resumen por momento del día")
print("---------------------------")
s = momentos[0] + momentos[1] + momentos[2]
print("\tTotal " + str(s) + " : " + str(momentos[0]) + "/" + str(momentos[1]) + "/" + str(momentos[2]))
p1 = 0
p2 = 0
p3 = 0
if s > 0:
p1 = 100 * momentos[0] / s
p2 = 100 * momentos[1] / s
p3 = 100 * momentos[2] / s
print("\tPorcentajes: " + str(p1) + "/" + str(p2) + "/" + str(p3))
print("Resumen por quincena")
print("------------------")
for s in range(2):
print("Quincena " + str(s + 1))
t = resumen[s][0] + resumen[s][1] + resumen[s][2]
p1 = 0
p2 = 0
p3 = 0
if t > 0:
p1 = 100 * resumen[s][0] / t
p2 = 100 * resumen[s][1] / t
p3 = 100 * resumen[s][2] / t
print("\tTotal " + str(t) + ": " + str(p1) + "/" + str(p2) + "/" + str(p3))
print("Advertencias del mes")
print("--------------------")
for d in range(30 - 1):
if datos[d][2] > 0 and datos[d + 1][0] > 0:
print("\tPrecaución día " + str(d + 1) + "/" + str(d + 2))
print("Día con más sismos (" + str(maxCantidad) + ")")
print("---------------------")
for d in range(30):
if num[d] == maxCantidad:
print("\tDía " + str(d + 1))

Ejercicio 5: Cálculo de Flujo de Tráfico

Este programa calcula el flujo de vehículos que pasan frente a la Universidad y los Bomberos, dado el número de vehículos que pasan frente al estadio. Se basa en la premisa de que el tráfico en la calle del Hospital es el doble que en la calle del estadio y que la suma del tráfico que entra y sale de cada intersección es igual.

import numpy as np

A = [[1, -1, 0, 0], [1, 0, 0, 0], [0, 0, 1, -1], [0, 1, -1, 0]]

print("a\tBomb\tSalida")
print("---------------------")

for a in range(0, 11, 1):
b = 2 * a
B = [10 - a, b + 10, b - 20, -10]
X = np.linalg.solve(A, B)
print(str(a) + "\t" + str(X[1]) + "\t" + str(X[3]))

Ejercicio 6: Análisis de Tiempos en Competencia de Carreras

Este programa gestiona una competencia de carreras. Primero, solicita los nombres de los jugadores y las pistas. Luego, registra los tiempos de cada jugador en cada pista. Finalmente, calcula y muestra el jugador más rápido por pista, el jugador con el mejor tiempo promedio y el tiempo más alto registrado.

import numpy as np

nombres = []
pistas = []

nombre = input("Ingrese nombre (FIN para terminar): ")
while nombre != "FIN":
nombres.append(nombre)
nombre = input("Ingrese nombre (FIN para terminar): ")

pista = input("Ingrese pista (FIN para terminar): ")
while pista != "FIN":
pistas.append(pista)
pista = input("Ingrese pista (FIN para terminar): ")

datos = np.zeros([len(pistas), len(nombres)])
resumen = np.zeros([3, len(nombres)])

for p in range(len(pistas)):
print("Datos pista " + pistas[p])

for n in range(len(nombres)):
tiempo = float(input("\tIngrese tiempo de " + nombres[n] + ": "))
if tiempo > 0:

datos[p][n] = tiempo
resumen[0][n] = resumen[0][n] + tiempo # acumulamos
resumen[1][n] = resumen[1][n] + 1 # contamos
resumen[2][n] = resumen[0][n] / resumen[1][n] # promedio
# Por cada pista, el menor tiempo
print("Menor tiempo por pista")
for p in range(len(pistas)):
print(pistas[p])
menorTiempo = 999999
for n in range(len(nombres)):
if datos[p][n] != 0:
if datos[p][n] < menorTiempo:
menorTiempo = datos[p][n]
for n in range(len(nombres)):
if menorTiempo == datos[p][n]:
print("\t" + nombres[n] + " (" + str(menorTiempo) + ")")
# Ahora, el jugador con promedio más bajo
menorTiempo = 999999
for n in range(len(nombres)):
if resumen[1][n] > 0: # Sólo si el jugador compitió
if resumen[2][n] < menorTiempo:
menorTiempo = resumen[2][n]
print("Jugador con mejor tiempo promedio (" + str(menorTiempo) + ")")
for n in range(len(nombres)):
if resumen[2][n] == menorTiempo:
print("\t" + nombres[n])
# Ahora, el menor tiempo entre todos
# (Aunque esto se podría agregar al ciclo de lectura)
mayorTiempo = 0
for p in range(len(pistas)):
for n in range(len(nombres)):
if datos[p][n] != 0:
if datos[p][n] > mayorTiempo:
mayorTiempo = datos[p][n]
print("Mayor tiempo: " + str(mayorTiempo))
for p in range(len(pistas)):
for n in range(len(nombres)):
if datos[p][n] == mayorTiempo:
print("\t" + pistas[p] + " : " + nombres[n])

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.