Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Alejandro Cores

Páginas: 1 [2]
21
Buenas tardes,

Aquí te dejo una posible solución al ejercicio:

Por un lado el código html:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
   <head>
      <meta charset="UTF-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <link rel="stylesheet" href="foro.css" />
      <title>Ejemplo 4</title>
   </head>
   <body>
   
      <div class="cabecera"> Bienvenidos a la Consulta </div>
      <div class="padre">
         <div class="menu">
            <ul> Menú
               <li> Cursos </li>
               <li> Humor </li>
               <li> Divulgación </li>
            </ul>
         </div>
         <div class="caja">
            <div class="novedades"  id="novedades"> Conoce nuestras últimas novedades </div>
            <div class="articulo" id="articulo"> Artículos sobre cardiopatías </div>
         </div>
         <div class="publicidad"> Espacio reservado para publicidad </div>
      </div>
      <div class="final">
         <div class="contacto" id="contacto"> Contacta con nosotros </div>
         <div class="aviso" id="aviso"> Aviso legal </div>
      </div>
   </body>
</html>

Y por otro lado el código css:

Código: [Seleccionar]
.cabecera {
    border: 1px solid black;
    width: 100%;
    display: flex;
    justify-content: center;
    display: flex;
    align-items: center;
    background-color: #DEB887;
}
.padre {
    display: flex;
}
.menu {
    border: 1px solid black;
    width: 25%;
    display: flex;
    justify-content: center;
    display: flex;
    align-items: center;
}

.caja {
    width: 50%;
}
.novedades {
    border: 1px solid black;
    height: 50%;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: #ADD8E6;
}

.articulo {
    border: 1px solid black;
    height: 47%;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: #90ee90;
}

.publicidad {
    border: 1px solid black;
    width: 50%;
    display: flex;
    justify-content: center;
    align-items: center;
}

.final {
    display: flex;
}

.contacto {
    border: 1px solid black;
    width: 50%;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: #DDA0DD;
}

.aviso {
    border: 1px solid black;
    width: 50%;
    display: flex;
    justify-content: center;
    align-items: center;
}

Espero que te sirva de ayuda, saludos.

22
Buenas, aquí te dejo lo que podría ser una solución al problema que planteas.

Una vez instanciada la clase Vuelo, podemos trabajar con ella haciendo consultas a lo que sería una pequeña base de datos.

En cuanto al código:

He modificado la forma en la que sugieres los datos sobre los vuelos. Como puedes observar se tiene un diccionario donde las claves son los asientos y los valores su estado de ocupación, siendo 0:no ocupado y 1:ocupado.

Código: [Seleccionar]
# -*- coding: utf-8 -*-

"""
#Boleteria
vuelos={"HN012":{"ORIGEN":["San Pedro Sula"],"DESTINO":["Roatan"],"cASIENTOS":['A#1', 'A#2', 'A#3', 'A#4', 'A#5', 'A#6', 'A#7', 'A#8'],"PRECIOu":[165.7],"COSTOe":[1200.70]}
        ,"HN013":{"ORIGEN":["Comayagua"],"DESTINO":["Roatan"],"cASIENTOS":['A#1', 'A#2', 'A#3', 'A#4', 'A#5', 'A#6', 'A#7', 'A#8', 'A#9', 'A#10', 'A#11', 'A#12', 'A#13', 'A#14', 'A#15', 'A#16'],"PRECIOu":[278.9 ],"COSTOe":[4500.00]}
        ,"HN016":{"ORIGEN":["Tegucigalpa"],"DESTINO":["San Pedro Sula"],"cASIENTOS":['A#1', 'A#2', 'A#3', 'A#4', 'A#5', 'A#6', 'A#7', 'A#8', 'A#9', 'A#10'],"PRECIOu":[125.8],"COSTOe":[1245.69]}
        ,"HN019":{"ORIGEN":["Ceiba"],"DESTINO":["Roatan"],"cASIENTOS":['A#1', 'A#2', 'A#3', 'A#4', 'A#5', 'A#6', 'A#7', 'A#8', 'A#9', 'A#10', 'A#11', 'A#12', 'A#13', 'A#14', 'A#15', 'A#16', 'A#17', 'A#18', 'A#19', 'A#20'],"PRECIOu":[124.9],"COSTOe":[2550.54]}}

"""

vuelos = [["HN012","San Pedro Sula","Roatan",165.7,{'A#1':1, 'A#2':1, 'A#3':1, 'A#4':1, 'A#5':1, 'A#6':1, 'A#7':1, 'A#8':1, 'A#9':0, 'A#10':0, 'A#11':0, 'A#12':0, 'A#13':0, 'A#14':0, 'A#15':0, 'A#16':0, 'A#17':0, 'A#18':0, 'A#19':0, 'A#20':0}],
          ["HN013","Comayagua","Roatan",278.9, {'A#1':1, 'A#2':1, 'A#3':1, 'A#4':1, 'A#5':1, 'A#6':1, 'A#7':1, 'A#8':1, 'A#9':1, 'A#10':1, 'A#11':1, 'A#12':1, 'A#13':1, 'A#14':1, 'A#15':1, 'A#16':1, 'A#17':0, 'A#18':0, 'A#19':0, 'A#20':0}],
          ["HN016","Tegucigalpa","San Pedro Sula",125.8,{'A#1':1, 'A#2':1, 'A#3':1, 'A#4':1, 'A#5':1, 'A#6':1, 'A#7':1, 'A#8':1, 'A#9':0, 'A#10':1, 'A#11':0, 'A#12':0, 'A#13':0, 'A#14':0, 'A#15':0, 'A#16':0, 'A#17':0, 'A#18':0, 'A#19':0, 'A#20':0}],
          ["HN019","Ceiba","Roatan",124.9,{'A#1':1, 'A#2':1, 'A#3':1, 'A#4':1, 'A#5':1, 'A#6':1, 'A#7':1, 'A#8':1, 'A#9':1, 'A#10':1, 'A#11':1, 'A#12':1, 'A#13':1, 'A#14':1, 'A#15':1, 'A#16':1, 'A#17':1, 'A#18':1, 'A#19':1, 'A#20':1}]]

class Vuelo:

    def __init__(self,codigo_vuelo,origen,destino,precio,asientos):
   
        self.codigo_vuelo = codigo_vuelo
        #self.id_avion = id_avion
        self.origen = origen
        self.destino = destino
        self.precio = precio
        self.asientos = asientos
        self.asientos_disponibles= [k for k in asientos.keys() if asientos[k]==0]
        self.asientos_no_disponibles = [k for k in asientos.keys() if asientos[k]==1]


def carga(conj_vuelos):
    l = []
    for i in range(len(conj_vuelos)):
        l.append(Vuelo(conj_vuelos[i][0],conj_vuelos[i][1],conj_vuelos[i][2],conj_vuelos[i][3],conj_vuelos[i][4]))
       
    return l

def consecuencia(codigo):
    for i in range(len(bbdd)):
        if bbdd[i].codigo_vuelo==codigo:
            return bbdd[i]
   

def mostrar_menu(opciones):
    print('Seleccione una opción:')
    for clave in sorted(opciones):
        print(f' {clave}) {opciones[clave][0]} {opciones[clave][1]} ')


def leer_opcion(opciones,l):
    while (a := input('Opción: ')) not in l:
        print('Opción incorrecta, vuelva a intentarlo.')
    return a


def ejecutar_opcion(opcion, opciones):
    opciones[1][2](opcion)


def generar_menu(opciones,l, opcion_salida):
    opcion = None
    while opcion != opcion_salida:
        mostrar_menu(opciones)
        opcion = leer_opcion(opciones,l)
        ejecutar_opcion(opcion, opciones)
        print()


def menu_principal():
    lista =[i.codigo_vuelo for i in bbdd]
    opciones = {
        1: ['Seleccionar un código de vuelo: ', lista, accion1]
       # '2': ('Salir', salir)
    }

    generar_menu(opciones,lista, '1')
   
bbdd = carga(vuelos)

def mostrar_menu2(opciones):
    print('Seleccione una opción:')
    for clave in sorted(opciones):
        print(f' {clave}) {opciones[clave][0]}')
       
def leer_opcion2(opciones):
    l = [i for i in opciones.keys()]
    a = int(input('Opción: '))
    while a not in l:
        print('Opción incorrecta, vuelva a intentarlo.')
    return a

def ejecutar_opcion2(opcion, opciones,vuelo):
    opciones[opcion][1](vuelo)

def generar_menu2(opciones,vuelo):
        mostrar_menu2(opciones)
        opcion = leer_opcion2(opciones)
        ejecutar_opcion2(opcion, opciones,vuelo)
        print()
       
def accion1(o):
    vuelo = consecuencia(o)
    opciones = {
        1: ['Consulta asientos disponibles', consultaDis],
        2: ['Ocupa asiento', ocupa],
        3: ['Consulta precio', consultaP]
    }

    generar_menu2(opciones,vuelo)


def consultaDis(vuelo):
    print(vuelo.asientos_disponibles)
   
def leer_asiento_seleccionado(vuelo):
    a = input('Asiento: ')
    vuelo.asientos[a] = 1
    vuelo.asientos_disponibles.remove(a)
    vuelo.asientos_no_disponibles.append(a)
   

def ocupa(vuelo):
    print("Selecciona un asiento: ",vuelo.asientos_disponibles)
    asiento = leer_asiento_seleccionado(vuelo)
   
def consultaP(vuelo):
    print(vuelos.precio)


if __name__ == '__main__':
    menu_principal()

Aquí adjunto un ejemplo de una ejecución de esta pequeña aplicación:

Citar
Seleccione una opción:
 1) Seleccionar un código de vuelo:  ['HN012', 'HN013', 'HN016', 'HN019']

Opción: HN012
Seleccione una opción:
 1) Consulta asientos disponibles
 2) Ocupa asiento
 3) Consulta precio

Opción: 1
['A#9', 'A#10', 'A#11', 'A#12', 'A#13', 'A#14', 'A#15', 'A#16', 'A#17', 'A#18', 'A#19', 'A#20']


Seleccione una opción:
 1) Seleccionar un código de vuelo:  ['HN012', 'HN013', 'HN016', 'HN019']

Opción: HN012
Seleccione una opción:
 1) Consulta asientos disponibles
 2) Ocupa asiento
 3) Consulta precio

Opción: 2
Selecciona un asiento:  ['A#9', 'A#10', 'A#11', 'A#12', 'A#13', 'A#14', 'A#15', 'A#16', 'A#17', 'A#18', 'A#19', 'A#20']

Asiento: A#9


Seleccione una opción:
 1) Seleccionar un código de vuelo:  ['HN012', 'HN013', 'HN016', 'HN019']

Opción: HN012
Seleccione una opción:
 1) Consulta asientos disponibles
 2) Ocupa asiento
 3) Consulta precio

Opción: 1
['A#10', 'A#11', 'A#12', 'A#13', 'A#14', 'A#15', 'A#16', 'A#17', 'A#18', 'A#19', 'A#20']

Creo que con el código, la explicación de Kabuto y lo que te he añadido aquí podrás interpretarlo todo. No obstante, si tienes alguna duda consulta.

Saludos.

23
Hola, siguiendo lo comentado por Kabuto te dejo por aquí lo que sería su sugerencia de clase Vuelo expresado en Python.

No sé si estás familiarizado el trabajo con clases (orientado a objetos) en Python.

Código de la clase "Vuelo":
Código: [Seleccionar]

# -*- coding: utf-8 -*-

class Vuelo:

    def __init__(self,codigo_vuelo,id_avion,origen,destino,precio,asientos):
   
        self.codigo_vuelo = codigo_vuelo
        self.id_avion = id_avion
        self.origen = origen
        self.destino = destino
        self.precio = precio
        self.asientos = asientos
        self.asientos_disponibles= [k for k in asientos if asientos[k]==0]
        self.asientos_no_disponibles = [k for k in asientos if asientos[k]==1]



24
Para el problema que planteas podría ser conveniente hacer uso de clases de python, donde "cASIENTOS" sería una lista de tuplas atributo de la clase "Vuelo", y dicho atributo consistiría en un diccionario, tal que, las claves son asientos y los valores representen ocupado o no ocupado.

 

25
Comunidad / Presentación
« en: 12 de Septiembre 2022, 19:17 »
Hola soy Alejandro, y después de hablar con Mario me he animado a colaborar en la creación de contenidos, desarrollo y mantenimiento del portal web.
Estoy estudiando Ingeniería Informática en la Universidad de Sevilla y estoy interesado en la ciberseguridad y las ciencias de la computación.
Espero poder completar mis conocimientos, ayudar y poder ser ayudado en este proyecto.
Saludos,
Alejandro.

Páginas: 1 [2]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".