IIC2115 / Syllabus-2022-2

Syllabus del curso IIC2115 - Programación como Herramienta para la Ingeniería 2022/II
21 stars 29 forks source link

Duda notebook 3 c1B #2

Open raimundo8 opened 2 years ago

raimundo8 commented 2 years ago

Holaa! esperando que esten bien tengo una duda con el notebook 3 de la clase 1B, es sobre stacks, la verdad en general igual creo que comprendi el concepto al compararlo con las listas , sin embargo me queda una duda en el ultimo código del notebook.

clase 1.b// notebook 3 // stacks //iic2115// profesora Fran Lucchini

class Texto:

def __init__(self):
    self.stack = []

def leer_archivo(self, nombre_archivo):
    print('Entrada:')

######################### Hasta acá todo claro, pero en las lineas que siguen el codigo me perdi completamente, por que uso el comando with? , depues uso open, como si fuera un archivo,txt?? y por ultimo con el as a fid para que sirve eso??#########

    with open(nombre_archivo) as fid:
        for linea in fid:
            print(linea.strip())
            self.stack.append(linea.strip())

    print()
    fid.closed

def invertir_lines(self):
    print('Salida:')

    while len(self.stack) > 0:
        print(self.stack.pop())

t = Texto() t.leer_archivo('stacks-texto.txt') t.invertir_lines()

Muchas gracias saludos!

TioTomy commented 2 years ago

Buenas, lo que describes es un Context Manager, usados más que nada para ejecutar líneas de código usando menos recursos. En este caso, el statement que inicia el CM es with. Luego se refiere a la acción que quiere ejecutar en el CM, la cual es open(nombre_archivo) en este caso. Por último, as se usa para asignarle un "nombre" al resultado de esta operación, en este caso fid. Todo lo anterior sería equivalente a escribir fid = open(nombre_archivo), pero con la ventaja de que no es necesario cerrar el archivo, pues viene incluido en with. Una mejor explicación la puedes encontrar aquí.

Espero te haya sido de ayuda la respuesta :)