Ejercicios
Inicial
Construya un programa que realice lo siguiente:
- Construir y ordenar de mayor a menor una lista con valores ingresados del teclado
- Recorrer la lista y contamos cuántos números pares y cuántos impares hay, con
while
y confor
- Usar
range
para generar los índices de una lista
Solución
N = int(input("Ingrese N: ")) # Numero de elementos a guardar
lista = [] # Lista para guardar los valores
i = 0 # Contador para controlar los elementos
while i < N:
# Entrada de valores
n = int(input("Ingrese valor: "))
lista.append(n) # Se agregan a la lista
i += 1
# Ordenar lista
lista.sort()
print(lista)
# Contar pares/impares con while
i = 0
n_pares = 0 # Contador de pares
n_impares = 0 # Contador de impares
while i < len(lista):
if lista[i] % 2 == 0:
n_pares += 1
else:
n_impares += 1
i += 1
# Mostrar resultado
print("Pares:", n_pares)
print("Impares:", n_impares)
# Contar pares/impares con for 1
n_pares = 0 # Contador de pares
n_impares = 0 # Contador de impares
for valor in lista:
if valor % 2 == 0:
n_pares += 1
else:
n_impares += 1
i += 1
# Mostrar resultado
print("Pares:", n_pares)
print("Impares:", n_impares)
# Contar pares/impares con for 2
n_pares = 0 # Contador de pares
n_impares = 0 # Contador de impares
for i in range(len(lista)):
if lista[i] % 2 == 0:
n_pares += 1
else:
n_impares += 1
i += 1
# Mostrar resultado
print("Pares:", n_pares)
print("Impares:", n_impares)
Pares/impares
De una lista de números generar dos listas, una con los pares y otra con los impares
Solución
from random import choice, randint
# Creacion de lista
lista = list(range(randint(20, 50)))
# Estructuras para guardar los valores
pares = []
impares = []
# Se recorre la lista
for valor in lista:
# Verificamos si el valor es para o impar y lo guardamos en la lista correspondiente
if valor % 2 == 0:
pares.append(valor)
else:
impares.append(valor)
# Mostrar los valores
print("Pares:", pares)
print("Impares:", impares)
Palabras
De una lista de palabras, encontrar la más larga
Solución
def palabra_mas_larga(palabras):
# Consideramos un string vacio como la palabra mas larga
max_pal = ""
# Recorremos la lista
for palabra in palabras:
# Comparamos los largos de palabra
if len(palabra) > len(max_pal):
max_pal = palabra # Asignamos la palabra mas larga que encontremos
return max_pal
palabras = ["murcielago", "hola", "chao", "paralelepipedo", "perro", "gato", "elefante"] # Lista de ejemplo
print("Palabra mas larga:", palabra_mas_larga(palabras)) # Resultado
Repetidos
Escribir una función que, dada una lista de números enteros entregada como parámetro, retorne una nueva lista que mantenga el orden de la lista original pero no tenga repetidos.
Solución
def sin_repetidos(lista):
nueva = [] # Lista a retornar
for val in lista: # Recorremos la lista original
if val not in nueva: # Si no encontramos el valor en la que retornaremos
nueva.append(val) # Agregamos el elemento
return nueva
lista = [1, 2, 2, 1, 4, 6, 2, 3, 4, 4, 1]
print("Lista original:", lista)
print("Sin repetidos:", sin_repetidos(lista))
Puntos
De una lista de puntos: [ [x0,y0], [x1,y1], ..., [xn,yn] ]
encontrar el que está más lejos del origen.
Solución
def distancia_origen(x, y):
return (x ** 2 + y ** 2) ** 0.5
def mas_lejano(puntos):
# Utilizamos el patron para buscar un maximo
max_dist = -1
max_punto = []
# Recorremos el arreglo
for punto in puntos:
# Calculamos la distancia al origen
d = distancia_origen(punto[0], punto[1])
if d > max_dist: # Guardamos la informacion del punto mas lejano
max_punto = punto
max_dist = d
return max_punto
# Puntos de ejemplo
puntos = [[0, 1], [1, 1.1], [2, 1], [0.4, 5]]
punto = mas_lejano(puntos)
print("Punto mas lejano:", punto)
Desafío: Ordenar la lista desde el punto más cercano al más lejano del origen
Solución
def distancia_origen(x, y):
return (x ** 2 + y ** 2) ** 0.5
def mas_lejano(puntos):
# Utilizamos el patron para buscar un maximo
max_dist = -1
max_punto = []
# Recorremos el arreglo
for punto in puntos:
# Calculamos la distancia al origen
d = distancia_origen(punto[0], punto[1])
if d > max_dist: # Guardamos la informacion del punto mas lejano
max_punto = punto
max_dist = d
return max_punto
def orden(puntos):
# Creamos una lista donde guardaremos los puntos de manera "descendente"
orden = []
# Calcularemos el punto mas lejano y lo removeremos de la lista
# Recorremos la lista de puntos mientras existan
while len(puntos) > 0:
lejano = mas_lejano(puntos) # Obtenemos el punto mas lejano
orden.append(lejano) # Lo agregamos a nuestra lista
puntos.remove(lejano) # Lo removemos de los puntos
orden.reverse() # Como agregamos los puntos en orden descendente, invertimos la lista
return orden
# Puntos de ejemplo
puntos = [[0, 1], [-1, 1], [-10, 10], [2.3, 0.1], [1, 1.1], [2, 1], [0.4, 5]]
ordenado = orden(puntos) # Ordenamiento
print(ordenado) # Salida