Saltar a contenido

Ejercicios « Colecciones de datos

Ejercicio 1

Realiza un programa que siga las siguientes instrucciones:

  • Crea un conjunto llamado usuarios con los usuarios Marta, David, Elvira, Juan y Marcos
  • Crea un conjunto llamado administradores con los administradores Juan y Marta.
  • Borra al administrador Juan del conjunto de administradores.
  • Añade a Marcos como un nuevo administrador, pero no lo borres del conjunto de usuarios.
  • Muestra todos los usuarios por pantalla de forma dinámica, además debes indicar cada usuario es administrador o no.

Sugerencia

Los conjuntos se pueden recorrer dinámicamente utilizando el bucle for de forma similar a una lista.
También cuentan con un método llamado .discard(elemento) que sirve para borrar o descartar un elemento.

Solución

Note

usuarios = {"Marta", "David", "Elvira", "Juan", "Marcos"}
administradores = {"Juan", "Marta"}

administradores.discard("Juan")
administradores.add("Marcos")

for usuario in usuarios:
    if usuario in administradores:
        print(usuario, "es admin")
    else:
        print(usuario, "no es admin")
Marta es admin
David no es admin
Elvira no es admin
Marcos es admin
Juan no es admin

Ejercicio 2

Durante el desarrollo de un pequeño videojuego se te encarga configurar y balancear cada clase de personaje jugable. Partiendo que la estadística base es 2, debes cumplir las siguientes condiciones:

  • El caballero tiene el doble de vida y defensa que un guerrero.
  • El guerrero tiene el doble de ataque y alcance que un caballero.
  • El arquero tiene la misma vida y ataque que un guerrero, pero la mitad de su defensa y el doble de su alcance.
  • Muestra como quedan las propiedades de los tres personajes.

Solución

Note

caballero = { 'vida':2, 'ataque':2, 'defensa': 2, 'alcance':2 }
guerrero  = { 'vida':2, 'ataque':2, 'defensa': 2, 'alcance':2 }
arquero   = { 'vida':2, 'ataque':2, 'defensa': 2, 'alcance':2 }

# Completa el ejercicio aquí
caballero = { 'vida':2, 'ataque':2, 'defensa': 2, 'alcance':2 }
guerrero  = { 'vida':2, 'ataque':2, 'defensa': 2, 'alcance':2 }
arquero   = { 'vida':2, 'ataque':2, 'defensa': 2, 'alcance':2 }

# Completa el ejercicio aquí
caballero['vida']    = guerrero['vida'] * 2
caballero['defensa'] = guerrero['defensa'] * 2

guerrero['ataque']   = caballero['ataque'] * 2
guerrero['alcance']  = caballero['alcance'] * 2

arquero['vida']     = guerrero['vida']
arquero['ataque']   = guerrero['ataque']
arquero['defensa']  = guerrero['defensa'] / 2
arquero['alcance']  = guerrero['alcance'] * 2

print("Caballero:\t", caballero)
print("Guerrero:\t", guerrero)
print("Arquero:\t", arquero)
Caballero:  {'ataque': 2, 'defensa': 4, 'alcance': 2, 'vida': 4}
Guerrero:   {'ataque': 4, 'defensa': 2, 'alcance': 4, 'vida': 2}
Arquero:    {'ataque': 4, 'defensa': 1.0, 'alcance': 8, 'vida': 2}

Ejercicio 3

Durante la planificación de un proyecto se han acordado una lista de tareas. Para cada una de estas tareas se ha asignado un orden de prioridad (cuanto menor es el número de orden, más prioridad).

¿Eres capaz de crear una estructura del tipo cola con todas las tareas ordenadas pero sin los números de orden?

Sugerencia

Para ordenar automáticamente una lista es posible utilizar el método .sort(), deberias probarlo.

Solución

Note

tareas = [ 
    [6, 'Distribución'],
    [2, 'Diseño'],
    [1, 'Concepción'],
    [7, 'Mantenimiento'],
    [4, 'Producción'],
    [3, 'Planificación'],
    [5, 'Pruebas']
]

print("==Tareas desordenadas==")
for tarea in tareas:
    print(tarea[0], tarea[1])

# Completa el ejercicio aquí
tareas = [ 
    [6, 'Distribución'],
    [2, 'Diseño'],
    [1, 'Concepción'],
    [7, 'Mantenimiento'],
    [4, 'Producción'],
    [3, 'Planificación'],
    [5, 'Pruebas']
]

print("==Tareas desordenadas==")
for tarea in tareas:
    print(tarea[0], tarea[1])

# Completa el ejercicio aquí
from collections import deque

tareas.sort()

cola = deque()
for tarea in tareas:
    cola.append(tarea[1])

print("\n==Tareas ordenadas==")
for tarea in cola:
    print(tarea)
==Tareas desordenadas==
6 Distribución
2 Diseño
1 Concepción
7 Mantenimiento
4 Producción
3 Planificación
5 Pruebas

==Tareas ordenadas==
Concepción
Diseño
Planificación
Producción
Pruebas
Distribución
Mantenimiento

Última edición: 23 de Septiembre de 2018