✅✅ ✅ ✅ ✅ Todos mis cursos gratuitos 👉 www.pildorasinformaticas.es ✅✅ ✅ ✅ ✅ 🚀 ¿Quieres ejercicios? ¿Quieres más temario? 👉 www.pildorasinformaticas.es/course/python-tutorizado/🚀 🚀 ¿Quieres que te resuelva las dudas de Python👉 www.pildorasinformaticas.es/course/python-tutorizado/ 🚀 💥💥💥 Siempre seguiré subiendo cursos gratuitos por aquí. Gracias a todos por seguirme. 💥💥💥
Tal vez no vea el comentario, por la gran cantidad que hay, pero de todos modos se lo dejaré. Le quiero agradecer por tan ricos vídeos que me han servido mucho y me han tendido una mano. Actualmente en Venezuela la situación económica es compleja y muchas personas trabajan solo para traer alimento a sus mesas. Pagarse un curso de cualquier cosa, sobre todo programación, es un lujo. Y yo me siento muy agradecido de contar con sus vídeos y enseñanza. El que lo haya hecho de manera gratuita no significa que no recibirá algo a cambio, a mi parecer, recibirá más que de haberlo hecho de cualquier otra forma. Muchas gracias Juan.
Este curso ha sido excelente, recomiendo no utilizar variables con tanta similitud, ejemplo: Personas, persona, listapersona, lista_personas, porque a la hora de leer el código puede llegar a ser complicado. Saludos
Para mi , es el mejor curso de Python que veo en TH-cam , y en la red en general,,,muchas gracias por ayudar con esto,,,,parami que estoy viejo...esta es la unica forma de aprender algo ....ya no puedo concurrir a la escuela,,,,inmensamente agradcido por la posibilidad
buenas, para los q esten viendo este video en 2024 o adelante y vienen de Java u otro similar, tengan en cuenta que Python permite tener multiples objetos con el mismo nombre. Por eso llama a 3 personas distintas con el nombre "p", algo que Java, por ej, no permite. Saludos y grandioso tutorial.
Hasta ahora había podido seguir los vídeos de forma relativamente llevadera, pero este es el primero que se me ha hecho difícil. Aun así, muy bien explicado todo, muchísimas gracias por tu tiempo.
Ya por el Video 41..Tremendo camino recorrido a través de este curso impartido por el Sr. Juan..Como está amigo en esta situación de cuarentena donde España, ha sido tan afectada.. Dios lo bendice. Desde Venezuela. En Cuarentena por el COVID-19.. 14/04/2020
Para una persona como yo, que viene de ver servers y comunicaciones, ahora aprender desarrollo porque va hacer devops es un golpe duro, pero con entusiasmo vamos adelante.
Saludos, profesor Juan. Estoy muy contenta siguiendo este curso de Python del que nos has provisto. Como info que podría resultar útil para algunos: no es necesario escribir ab+ para hacer el load() de los datos del fichero a la variable, sino que se puede utilizar rb (read binary). Como no necesitamos modificar el archivo, utilizando rb nos ahorramos la línea de listaDePersonas.seek(0), ya que el modo de lectura posiciona el cursor al inicio del archivo. No se puede utilizar wb+ porque esta instrucción trunca el archivo, lo que haría que perdiéramos la información que estaba almacenada anteriormente. E igualmente, no necesitamos modificar el archivo, solamente extraer la información para asignarla a una variable. Vuelvo a agradecer por el curso y voy a seguir con este y muchos más. Eres grande!
Eres un genio profe. Gracias por compartir tu amplio conocimiento. Espero sigas este curso mucho más, y llegues a BBDD, ciente-servidor, mono y multi usuario, threads, transferencia de archivos, ejecución de comandos de sistema, etc...
Después de ver el video 8 veces y reflexionar por días lo entendí !! vale mucho la pena, no se salten sin entenderlo y miren todos los comentarios ! ayudan bastante
jajaja yo ya iba a tirar la toalla. Es la segunda vez que lo repaso. Lo curioso es que cuando lo estoy viendo, pienso: Claro, es entendible, yo tambien haría lo mismo. Y cuando lo hago por cuenta propia, me tiro tremendas maromas. jaja
Es el mejor curso de Python que he visto. Lo explica todo con detalle y de forma muy clara. Se entiende a la perfección y hace que todo parezca facil. Mi enhorabuena al profesor.
Es difícil encontrar pedagogía más eficiente. Os felicito, estimado Juan. Pero mayor aún es vuestro altruísmo por compartir vuestros conocimientos. Muchas gracias!!!
Sin duda, este video es un punto y aparte. No es que sea difícil, es que en este video vemos muchos de los conceptos aplicados en la programación orientada a objetos (POO) y ademas de los temas vistos en la serialización. Y si no pusimos la suficiente atención a esos temas, pues este video se te hará algo complicado. Por eso es bueno, siempre practicar mucho, hasta entender todo el proceso, cuando terminamos de ver un video. Muchísimas gracias Juan, por toda esta información y por la enseñanza. Un saludo!
Se ha saltado conceptos como el __str__ y format y el metodo de cadenas {},{},{}. me salto el video este no voy a perder el tiempo a entender algo que no se ha explicado los conceptos previos.
@@jesusmolina5951 revisa en google, son conceptos no tan complicados, lo del format es simplemente para decirle que la variable va dentro de un string, pero que proviene de una variable de cualquiero otro tipo, lo mismo se pudo hacer usando print(f" aqui va el texto { aqui va la variable }" y te ahorras el format, pero son opciones simplemente
Quiero agradecerle este gesto profesor que tiene con nosotros, dedicarnos su tiempo en una cantidad impresionante de videos, muchos autodidactas de nosotros seguimos sus videos con mucha pasión.
cada video qué pasa me impresiono más de la forma en la que enseñas!! muchas gracias por compartir este contenido, espectacular el curso tío pildorasinformaticas!! un crack por donde se le mire
Soy nuevo en el mundo de la programación, y leyendo los comentarios, me pasó lo mismo que a muchos... acá hay conceptos claves y puede complicarse, no tanto por la complejidad sino por las múltiples llamadas entre objetos. Yo lo entendí bastante bien, pero la clave a mi entender está en que uno pueda replicarlo sin mirar el video de forma pasiva. Este es un ejercicio para hacerlo uno solo desde cero porque, repito, a mi entender hay conceptos claves.
Llevo poco mas de un mes con este curso a dia de hoy me encuentro en este video. Mi pregunta: es normal a esta altura del curso entender la teoria y todo moderadamente bien pero tener el sentimiento de que si tengo que hacer esto por mi cuenta lo veo muy dificil por no decir imposible ? Sera cuestion de tiempo y seguir practicando ? Todos pasamos por este proceso ? Agradesco mucho una respuesta, y felicidades a Juan por este gran curso!!
siento exactamente lo mismo! entiendo todo lo que va explicando Juan, pero si llegara a tener que hacer algo por mi misma, no sabría por donde comenzar
@@ashtangaurquiza3751 Es muy común sentir esto, hasta que no tomes un desafío o por tu cuenta hagas un proyecto, no vas a vencerlo. Les recomiendo jugar con el codigo, pensar algun programa que les guste armar (recreativamente o no) y vean como hacerlo. Por ejemplo yo hice un gestor de carrito y la verdad que me ayudo mucho a afianzar y a poder usar todo el conocimiento que tengo
@Sakurai Chan concuerdo . Ahora me pasé a intentar aprender desarrollo front end, estoy terminando de aprender las propiedades de css y en poco sigo con js
@Sakurai Chan Hola, ya sabes como funcionan las "{}{}{}"? Recuerdo que una vez las utilizo para un for donde puso la variable "{i}" dentro de ella, pero en este caso no me queda claro su funci\'on
@@arturo1049 Hola, Arturo. Según la documentación de Python, se deben usar los marcadores {} para indicar/marcar dónde se sustituirá la variable, además, debes indicar qué es lo que vas a formatear. O sea, es cómo darle el argumento. Por ejemplo: en el código de esta clase se tienen tres variables (self.nombre, self.genero, self.edad) las cuales serán retornadas en formato str, por ello se usa format. Los marcadores van entre comillas porque se supone que lo que ira ahí será texto, entonces, al usar los tres marcadores y darle como argumento a format (self.nombre, self.genero, self.edad) nos estaría indicando que en el primer marcador va el nombre, en el segundo el genero y en tercero la edad. La cantidad de marcadores debe corresponder con la cantidad de argumentos. Un ejemplo sencillo sería: print('Hola, mi nombre es {}. Soy de {}, estado{}.'.format('Pedro', 'Canada', 'Antimano')) resultado: Hola, mi nombre es Pedro. Soy de Canada, estado Antimano. Espero haberte ayudado. Si alguien quiere anexar algo más estaría bueno.
Primer vídeo que se me ha atragantado un poquito, pero no hay nada como copiar el código, empezar a analizarlo y ver que hace cada cosa. Al final poco a poco todo va cobrando sentido. Un curso excelente, gran trabajo y mil gracias.
saben que voy a hacer con este video todo el codigo que escribio lo envio a una imprenta es la unica forma muchachos asi puedas rayarlo colgarlo en mi pared reescribir el codigo en la pared. sacando por que hace esto y por que aquello..... Dios mio que video. espero poder cazarlo.
Al momento de definir el constructor de la clase ListaPersonas y abrir el fichero, también lo podríamos hacer de la siguiente forma. class ListaPersonas: personas=[] def __init__(self): lista=open("ficheroBin","rb+") try: self.personas=pickle.load(lista) print("Se cargaron {} personas del fichero externo".format(len(self.personas))) except: print("El fichero está vacío") finally: lista.close() del(lista) Abrir el fichero en modo de lectura binaria, así el cursor se posiciona al inicio y omitir la línea: lista.seek(0)
anteriormente no se había mencionado ese metodo en este curso. no tiene gran ciencia es lo que explica en el minuto 3:15 de este mismo video. es un metodo sencillo pero muy practico. saludos
saludos, antes que todo agradecerte por tomarte el tiempo de hacer estos videos y felicitarte por la forma tan facil de explicar las cosas para que todos entiendan, me pruguntaba si seria posible que explicaras este ejemplo con la funcion INPUT para ingresar los datos por teclado.
La antepenúltima línea de código, es decir esta: persona=Persona("Ana", "Femenino", 19) La sustituyes por esta: persona=Persona(input("Nombre: "), input("Sexo: "), input("Edad: "))
Vengo de C# y me pareció estupenda la explicación del código, que tiene sus "cositas" y si uno no viene con el rodaje de los videos anteriores, se puede perder. Me salió de una, a la primera, pensando antes de ver el código explicado. Grande profe, cuando termine todo el curso, seguro me pongo a hacer un curso "premiun" de la página a ver qué es lo que tengo que reforzar.
En vez de copiar y pegar todo el código de vehiculos, pueden también o escribir "import SerializarObjetos " o "from SerializarObjetos import Vehiculo" y me funcionó Marca: MAZDA Modelo: MX5 EnMarcha: False Acelerando: False Frenando: False None Marca: SEAT Modelo: LEON EnMarcha: False Acelerando: False Frenando: False None Marca: RENAULT Modelo: MEGANE EnMarcha: False Acelerando: False Frenando: False None
No entiendo lo de: def __str__(self): return "{} {} {}".format(self.nombre, self.genero, self. edad) no entiendo todavía como funciona todo lo de return... y tampoco recuerdo en que video se vio con anterioridad, si alguien me puede ayudar sería grandioso. Muchas gracias de ante-mano
Allí donde veas "return" lo puedes traducir mentalmente por "devuelve". En cuanto a los símbolos {} se utilizan para extraer los strings de las expresiones a las que hace referencia. Esto lo tienes explicado en la documentación en la siguiente página: docs.python.org/2/library/string.html en el apartado 7.1.3.2 Un saludo!
Dejo la respuesta por si alguien con el tema del Coronavirus también quiso estudiar Python. - El return como dice Juan es para "devolver" un valor al terminar la función que estás llamando. En este caso la función def __str__ devuelve lo que quieras que salga en consola cuando quieras imprimir la clase (Generalmente si intentas imprimir una clase sin def __str__ te devuelte un mensaje en protocolo 0x). Si tienes dudas sobre esto repasa los videos sobre Clases y Objetos, por que lo vas a necesitar. - Las llaves {} son "placeholders". O sea que podrias hacer, digamos: print(self.nombre, self.genero, self.edad) // Otro ejemplo: print ("Mi nombre es: ", self.nombre) Y también podrías hacer print( "{} {} {}".format(self.nombre, self.genero, self.edad)) // Otro ejemplo: print("Mi nombre es: {}".format(self.nombre) Es el primer video donde se enseña lo de los placeholders pero es simple, una de las maneras de imprimir variables.
cuando ejecuto el codigo del minuto 19:00 me sale este error pickle.PicklingError: Can't pickle : it's not the same object as __main__.persona he revisado todo el codigo y está igual, pero no sé porque me sale ese error.
Hola, primero agradecerte tu tiempo para enseñarnos programación, tu labor es encomiable, me está sirviendo de mucho. Te quería hacer una pregunta, se pueden programar aplicaciones Android con Python? Y si es así me podrías orientar un poco? Gracias.
Se me ha hecho muy interesante esta lección, pero me costo entenderle ya que abarcas nuevos conceptos y métodos que no habíamos visto, como también algunas buenas practicas que llevabas en videos anteriores que aquí simplemente se olvidaron, y como muchos mencionan el método que programas para leer el archivo realmente no estas leyendo el fichero externo si no que es una copia exacta del método mostrarPersonas que es una lectura que existe en memoria de la lista que se ejecuta por el método constructor, que si bien para fines prácticos funciona e incluso puede ser interesante para optimización de recursos, creo que se pierde el porque se supone que es un método para leer el fichero externo, pero te estoy muy agradecido con tu curso esto solo tómalo como una pequeña observacion.
no entiendo nada, este video esta relacionado al de txt?? o sea necesito descargar la libreria y usarla con txt o esto no tiene nada que ver y esta mostrando otra forma de guardar?
Que tal! yo trabajo con anaconda y no me funciona ese codigo que compartiste en el video para instalar tkinder, corri el siguiente comando: conda install -c anaconda tk y aún así no me funciona, que puedo hacer?
Me ha confundido durante muchas horas que pongas "ab+" en el constructor de la class ListaPersonas. Pero al fin lo he comprendido. No añadimos nada aún poniendo "ab+", pero es la única forma de que no cree cada vez que abrimos un archivo distinto para sobreescribir el antiguo. Vaya si se aprende dándole vueltas al código durante horas, jajaja. Lo ideal sería que la primera vez que se ejecutase tuviese "wb+", y las siguientes veces "rb", pero eso lo aglutina en este caso "ab+" ya que crea un archivo si no existe y además no sobreescribe su contenido si ya existe dicho archivo. pfffffffffffff
Exacto. Yo dudo en lo siguiente: ¿Por qué es necesario a la hora de cargar el archivo poner el self.personas = pickle.load(listadepersonas)? Lo digo porque en el vídeo 39 podíamos igualarlo a lo que fuese. Aquí, sin embargo, si no se iguala a self.personas no funciona. Yo pensaba que lo relevante es lo que se carga (listadepersonas) y que se supone que ahí ya estaba almacenada la información.
Si hago, por ejemplo, la prueba de sustituir el self.personas = pickle.load(listadepersonas) por un self.prueba = pickle.load(listadepersonas) y luego imprimo ese self que he improvisado: for p in self.prueba: print (p), pasa lo siguiente: cuando el fichero externo no está aún creado, me da error: AttributeError: 'listapersonas' object has no attribute 'prueba'. Pero cuando vuelvo a ejecutarlo, me dice que hay una persona en el archivo externo, pero si sigo añadiendo personas, nunca me sale el acumulado, sino SOLO la última que he añadido. A ver si alguien puede ayudarme, que no me gustaría quedarme con la miel en los labios con este código!
Sergio Se q puede ser un poco tarde pero la respuesta a su pregunta puede ser que al cambiar a self.prueba(variable str, no lista).. estás guardando una línea del fichero externo.. por lo cual no vas a poder ver más líneas de texto por q no puedes almacenarlo en una variable sin formato de lista...
@@Sergio-su6rt creo que el problema esta en que el init con seek(0) estamos volviendo a llevar al puntero a la 1ra linea, por lo tanto sobreescribe todo lo demas.
Hola! muy buenas la explicaciones. Oye, cuando guardo cambios y ejecuto, nombre-género y edad me salen pegados (sin espacio) qué puede ser? estoy usando Geany (IDE) en MX Linux
Buenos días, primeramente agradecido por tan valioso aporte! tengo un par de dudas, primero porque en alguna clase antes de los dos puntos colocas paréntesis y otras no, segunda, que motiva el uso del variables con "self" me confunde el ámbito de uso de este.,
Vengo haciendo el curso que es una maravillla, pero este video pega un salto muy grande, hay que reveer muchas cosas y sobre todo no usar nombres tan similares como p, persona, personas, listapersonas, ListaPersonas, listade personas, etc. a los que estamos aprendiendo se nos dificulta mucho entender donde va cada cosa con nombres tan similares. Espero se acepten criticas constructivas. Saludos
Hola Juan, lo primero agradecerte la dedicación que le das a tus vídeos porque son de una calidad impresionante. Lo segundo, me gustaría preguntarte un par de cosas, la primera vez que creamos el método "agregarPersonas" el segundo parámetro es "p" porque así llamamos a la variable con la que nos referimos a una persona. Así mismo usamos "p" para el bucle for. Ya hacia el final del vídeo, la variable a la que hacemos referencia a la persona para de "p" a "persona". Esto me desubica un poco, ¿cómo es posible que siga funcionando el código? si la variable no es "p" y ¿porqué no utilizamos "i" para el bucle for como cuando nos lo explicaste? Muchas gracias
Hola, primero que todo, muchas gracias Juan por el video. Lo otro, es que me sale un error con la variable "listaDePersonas", no me la reconoce en el código y lo tengo exactamente igual que tu. Gracias.
Creía que era el único que no entendía, pero veo en los comentarios a muchos que están igual. RECOMENDACION pienso que es conveniente para cursos posteriores que se usen variables con distintos nombres, ya que si todo se llama PERSONA, la persona que ve el video queda confundida. 🤣🤣🤣.
Cuando imprimimos un objeto "print(objeto)" Python nos devuelve una posición de memoria: "" Pero si en la clase del objeto definimos una funcion "__str__", lo que devuelva dicha funcion (return) sera lo que se imprima al realizar "print(objeto)".
Pero pq darle el formato .format() si puede simplemente hacer retirn del objeto? Si vas a imprimir asi las cosas no es necesario usar el metodo __str__ o de que me estoy perdiendo? Gracias
@@dicesdw buenos días, la razón de que utilice __str__ con un return .format() es que con los tres elementos self.nombre, self,genero y self.edad crea UNA sola cadena de caracteres, es decir, lo que hace la funcion es concatenar los 3 elementos en un string unico Si intentas hacer un return objeto no va a funcionar, tendria que ser con un bucle for que recorra cada elemento del objeto y te daria problemas con la siguiente clase que cuyo objeto es una lista
Con el IDE DE PYTHON, no me da, pero bien igual se que esto es lo primero para hacer una base de datos....Gracias Juan y sigo tus videos...de Python....obvio jaja
Tengo un problema. En la línea print("Se cargaron {} personas del fichero externo".format(len(self.personas))) las llaves (aka placeholders, {}), no me aparecen en un color distinto, es decir, no las toma como un formato diferente, es puro texto Mi python es versión 3.8.5 Otra duda que tengo es ¿por qué en el método __init__ se usa "ab" pero en guardarPersonasEnFicheroExterno se usa "wb", acaso el usar "wb" no debería borrar la información del fichero?
una cosa en el caso de querer borrar una persona del fichero en vez de agregarlas como se haría? no se si me he perdido de algo pero no encuentro una solución 😔
Hola Juan, tengo un pregunta, por que proposito tiene tener dos metodos o funciones como "mostrarInfoFicheroExterno" y "mostrarPersonas" es que en mi opinion ellos hacen lo mismo. Me puedes aclarar esta duda por favor??
EL metodo mostrarPersonas era del anterior , cuando habia instanciado p Sandra ,Antonio y Ana ,en el ultimo tramo del video ya no esta porque lo habia borrado ya no es necesario usar ese metodo
el tema del __str__, lo busque en los otros videos y no lo encontre, en que video esta espeficicamente? y lo otro para que meter el tema del self.persona=pickle, con el try y except si nolo usaremos, es como complicarse la vida, no seria mejor primero crear lo que ocuparesmo y no agregar mas lineas de codigo innecesarias, de todas maneras gracias por el video.
Con respecto a la función __str__, en python (como en la gran mayoría de los lenguajes) hay algo que se llama elevación de tipo o autocasting, en los lenguajes si tienes una función que espera un parámetro de tipo float y le pasas un int, el compilador/interprete al notar que requiere un float pero le pasa el int, convierte el int a float y la función trabaja adecuadamente por que no hay perdida de información, si es al revés, tienes una función que requiere int y le pasas float, la mayoría de los lenguajes darán error en compilación o en ejecución por que no saben que hacer con el float ya que no hay elevación de tipo de float a int. Teniendo esto, en Python puedes tener tu propio "Autocasting", al crear una función _str__(self), esta función debe devolver una cadena, así cuando una función requiere entre sus parámetros una cadena llamara automáticamente la función __str_ para hacer un autocasting y así la función que requiere una cadena reciba una cadena. Ej: class dump(): def __init__(self): self._Soy_ = "Soy de la clase Dump" def __str__(self): return self._Soy_ class dump1(): def __init__(self): self._Soy_ = "Soy de la clase Dump1" d = dump() d1 = dump1() print(d) print(d1) En el ejemplo ya que dump tiene _str_ definido, al requerir una cadena print, python realiza un autcasting de dump a str, cosa que no sucede con dump1. En python print requiere una cadena siempre y hay autocasting a cadena de listas, tuplas, ints y si no me equivoco todos los tipos/clases predefinidos en python.
me podrían recordar en que videos vemos funciones tipo ___str__? necesito repasarlo para entender mejor el capitulo al igual que ese formato que tampoco recuerdo muy bien:'v, ese "{} {} {}".format()
Hola, alguien sabe en que vídeo vimos la función ".format" no la recuerdo. O bien si alguien me puede decir donde poder leer sobre ella? Muchas gracias!
Realmente creo que no la vimos pero es simple. En este caso lo que va entre los parentesis del .format() es lo que se va a mostrar en los {} puestos anteriormente.
Hola Juan primero que nada agradecer el trabajo que haces, es realmente increíble e invaluable tu ayuda a la comunidad. Te quería consultar por los métodos mostrarPersonas y mostrarInfoFicheroExterno, no estarían haciendo lo mismo? Entiendo que uno es solo para mostrar la lista pero el otro no debería abrir el archivo para luego mostrarlo. Seguramente en algún paso me perdí.
tengo que repasar todo lo aprendido desde POO para entender mucho mejor este ejercicio, gracias profe :3, me podría explicar deducida mente para que sirve una clase si no es molestia, lo quisiera entender por favor
Me quedó una duda que no pude despejar navegando por internet, así que espero que pueda ayudarme ! . El modo de apertura de los archivos en Python son iguales a C o C++ ?, me refiero a que, por ejemplo en C, cuando se usa "Wb" en caso de que el archivo externo no exista, se crea uno nuevo pero si este ya existiera se sobreescribe, perdiendo los datos anteriores, pero por lo que vi en este vídeo, eso no pasó ! . Estoy realmente confundido con los modos de apertura, agradecería si pudieras ayudarme, Saludos de Argentina !
Estoy justo terminando de ver el video 40j, muchas gracias por tus excelentes explicaciones! Espero que sigas así! Se verá matrices más adelante en el curso? Se la ve complicada con Python. Saludos y Exitos
Si con matrices te refieres a los array, python no posee una estructura de matrices nativamente aunque tiene "lista" la cual tiene un uso parecido a los array puedes también usar las lista de forma multidimensional. En los ejemplos de este mismo video la lista están trabajando muy parecido a lo que hacen los arrays.
Si no me equivoco, creo que el profesor lo explicó en su momento cuando abarcó el tema de la lista. De igual forma aquí va un ejemplo. my_list = [ [15, 2, 8, 5, 3], [3, 3, 7], [9, 1, 16, 13], [], [5] ] for column in my_list: for item in column: print(item, end=" ") print() Nota: puede recorrer la lista por su índice como también incluir cuanta lista dentro de lista desee. La lista puede tener integer, float o string.
Hola, tengo una duda desde que inicio el curso. los metodos me retornan None, lo estoy manejando con mensajes, cadena vacia "" o valor asociado al metodo. Pero en caso de ser un tipo void de c# que en python no existe, como lo manejo?
Y no hay alguna manera de guardar en el archivo binario variables int y float? No se puede entonces usar metodos getters y setters en los objetos, eso lo complica
✅✅ ✅ ✅ ✅ Todos mis cursos gratuitos 👉 www.pildorasinformaticas.es ✅✅ ✅ ✅ ✅
🚀 ¿Quieres ejercicios? ¿Quieres más temario? 👉 www.pildorasinformaticas.es/course/python-tutorizado/🚀
🚀 ¿Quieres que te resuelva las dudas de Python👉 www.pildorasinformaticas.es/course/python-tutorizado/ 🚀
💥💥💥 Siempre seguiré subiendo cursos gratuitos por aquí. Gracias a todos por seguirme. 💥💥💥
Ha sido el episodio más dificil hasta ahora y eso que vengo de Java, muchas gracias por tu ayuda, en tiempos de pandemia eres mi hobbie :)
En este video , me atasqué, voy a tener que mirarlo con tranquilidad
despues de tanto tiempo y es el mejor curso que he visto con respecto a python
Tal vez no vea el comentario, por la gran cantidad que hay, pero de todos modos se lo dejaré. Le quiero agradecer por tan ricos vídeos que me han servido mucho y me han tendido una mano. Actualmente en Venezuela la situación económica es compleja y muchas personas trabajan solo para traer alimento a sus mesas. Pagarse un curso de cualquier cosa, sobre todo programación, es un lujo. Y yo me siento muy agradecido de contar con sus vídeos y enseñanza. El que lo haya hecho de manera gratuita no significa que no recibirá algo a cambio, a mi parecer, recibirá más que de haberlo hecho de cualquier otra forma. Muchas gracias Juan.
Soy Programador y profesor de Matemática te envió mis mas sinceras FELICITACIONES por tu refinada pedagogía desde Venezuela amigo juan
Hola, Somos lo mismo soy profesor de Matemática en Argentina y programador. una gran coincidencia.
Buena profe
Este curso ha sido excelente, recomiendo no utilizar variables con tanta similitud, ejemplo: Personas, persona, listapersona, lista_personas, porque a la hora de leer el código puede llegar a ser complicado. Saludos
Para mi , es el mejor curso de Python que veo en TH-cam , y en la red en general,,,muchas gracias por ayudar con esto,,,,parami que estoy viejo...esta es la unica forma de aprender algo ....ya no puedo concurrir a la escuela,,,,inmensamente agradcido por la posibilidad
EXCELENTE COMO SIEMPRE Y DE LOS MAS DIFICILES ESTE VIDEO !!! QUIEN CON PYTHON EN 2021????
Sii Arrancando en este mundo!
Yo, pero en 2022
buenas, para los q esten viendo este video en 2024 o adelante y vienen de Java u otro similar, tengan en cuenta que Python permite tener multiples objetos con el mismo nombre. Por eso llama a 3 personas distintas con el nombre "p", algo que Java, por ej, no permite.
Saludos y grandioso tutorial.
7 años del curso y recien lo arranco sos un tipaso pildoras gracias por tanto pienso dejarte este coment cada vez que termine un video mil gracias.
"Primero vamos a hacer algo senillo" JAJAJAJAJAJAJA, muy buen video profe.
Hasta ahora había podido seguir los vídeos de forma relativamente llevadera, pero este es el primero que se me ha hecho difícil. Aun así, muy bien explicado todo, muchísimas gracias por tu tiempo.
Me paso lo mismo , este fue el 1er video que no enteni NADA jajjaja
@@eric-nq7kc jajaja ya somos tres!
@@ricardoracines5232 4
5 :(
...Creo que es un video para volver a revisar cuando haya mas práctica y mucha más de la lógica de programación en la cabeza...
x6, hasta ahora habia podido entender todo lo que se hacia, pero este si debo revisarlo bien, no le entendi casi xD
Este señor evidentemente es un robot, te amo pildoras informáticas
Ya por el Video 41..Tremendo camino recorrido a través de este curso impartido por el Sr. Juan..Como está amigo en esta situación de cuarentena donde España, ha sido tan afectada.. Dios lo bendice. Desde Venezuela. En Cuarentena por el COVID-19.. 14/04/2020
Justo 3 años después de tu comentario estoy viendo este mismo vídeo. 14/04/2023
Un código que habrá que repasar varias veces para las personas que aprendemos nuestro primer lenguaje
joder y tanto xD
me ha costado aprender sobre paquetes distribuibles y guardado permanente
Es más fácil leer ruso
Para una persona como yo, que viene de ver servers y comunicaciones, ahora aprender desarrollo porque va hacer devops es un golpe duro, pero con entusiasmo vamos adelante.
Durante 40 videos de la clase no tuve problemas para seguirte el ritmo y este lo tuve que ver 5 veces para entenderle, gracias por el curso
Estoy igual, primer video que tendré que volver a ver, y justo a las puertas de interfaces gráficas que era lo que más me interesaba, pobre de mi :(
este video es para verlo varias veces, hay mucho que procesar...
excelente explicación!!
Ya a partir de este video empecé a sentir el calor de la verdadera programación. Un verdadero reto pero con tus enseñanzas lo estoy logrando. Gracias!
tal cual, XD esto me parecio mas heavy que el mismo POO
Se complicó! Intentaré verlo de nuevo con un café y teniendo fresco el research que acabo de hacer a ver si entiendo un poco mejor ...
yo hice lo mismo y ahora entiendo mejor jajaja
@Nicolás Castellanos a mi la mayoria de las veces que me da error es por la sintaxis que he escrito algo mal o es por las tabulaciones.
Saludos, profesor Juan. Estoy muy contenta siguiendo este curso de Python del que nos has provisto.
Como info que podría resultar útil para algunos: no es necesario escribir ab+ para hacer el load() de los datos del fichero a la variable, sino que se puede utilizar rb (read binary). Como no necesitamos modificar el archivo, utilizando rb nos ahorramos la línea de listaDePersonas.seek(0), ya que el modo de lectura posiciona el cursor al inicio del archivo.
No se puede utilizar wb+ porque esta instrucción trunca el archivo, lo que haría que perdiéramos la información que estaba almacenada anteriormente. E igualmente, no necesitamos modificar el archivo, solamente extraer la información para asignarla a una variable.
Vuelvo a agradecer por el curso y voy a seguir con este y muchos más. Eres grande!
Te agradezco!!
Una pregunta ¿El wb no reemplazaba lo que había en el fichero por la lista de personas? ¿Entonces porqué luego muestra las personas que cargo antes?
Eres un genio profe. Gracias por compartir tu amplio conocimiento.
Espero sigas este curso mucho más, y llegues a BBDD, ciente-servidor, mono y multi usuario, threads, transferencia de archivos, ejecución de comandos de sistema, etc...
Sebastian Villafañe exactamente lo que iba a solicitar... felicitaciones!! de verdad es excelente el contenido y la forma de explicar
costo,pero se entendio,despues de verlo 4 veces e ir haciendolo paso a paso me quedo claro.
Muchas gracias por el contenido!!!
Después de ver el video 8 veces y reflexionar por días lo entendí !! vale mucho la pena, no se salten sin entenderlo y miren todos los comentarios ! ayudan bastante
jajaja yo ya iba a tirar la toalla. Es la segunda vez que lo repaso. Lo curioso es que cuando lo estoy viendo, pienso: Claro, es entendible, yo tambien haría lo mismo. Y cuando lo hago por cuenta propia, me tiro tremendas maromas. jaja
Es el mejor curso de Python que he visto. Lo explica todo con detalle y de forma muy clara. Se entiende a la perfección y hace que todo parezca facil. Mi enhorabuena al profesor.
Esta clase si me hizo pensar jajajaj pero estuvo interesante, saludos profe y muchas gracias desde México
Muchas Gracias Camilo, Muy Gentil de tu parte , un abrazo y sigo luchando,,,es que estoy viejo y gruñon ....el problema soy yo ...un abrazo
Es difícil encontrar pedagogía más eficiente. Os felicito, estimado Juan. Pero mayor aún es vuestro altruísmo por compartir vuestros conocimientos. Muchas gracias!!!
Sin duda, este video es un punto y aparte. No es que sea difícil, es que en este video vemos muchos de los conceptos aplicados en la programación orientada a objetos (POO) y ademas de los temas vistos en la serialización. Y si no pusimos la suficiente atención a esos temas, pues este video se te hará algo complicado.
Por eso es bueno, siempre practicar mucho, hasta entender todo el proceso, cuando terminamos de ver un video.
Muchísimas gracias Juan, por toda esta información y por la enseñanza.
Un saludo!
He visto este video ya 2 veces y aun no me quedan claros muchos conceptos, hasta que no tenga claro todo no pasare al siguiente, gracias maestro!!!
Se ha saltado conceptos como el __str__ y format y el metodo de cadenas {},{},{}. me salto el video este no voy a perder el tiempo a entender algo que no se ha explicado los conceptos previos.
@@jesusmolina5951 revisa en google, son conceptos no tan complicados, lo del format es simplemente para decirle que la variable va dentro de un string, pero que proviene de una variable de cualquiero otro tipo, lo mismo se pudo hacer usando print(f" aqui va el texto { aqui va la variable }" y te ahorras el format, pero son opciones simplemente
El vídeo de la PRUEBA DE FUEGO 🔥 Tocó verlo varias veces, pero valió la pena 😎 Seguimos, profe.
Muchas gracias , saludos desde Chile.
Quiero agradecerle este gesto profesor que tiene con nosotros, dedicarnos su tiempo en una cantidad impresionante de videos, muchos autodidactas de nosotros seguimos sus videos con mucha pasión.
cada video qué pasa me impresiono más de la forma en la que enseñas!! muchas gracias por compartir este contenido, espectacular el curso tío pildorasinformaticas!! un crack por donde se le mire
Capitulo dificil, minuto #03:17 no recuerdo que lo hayas explicado antes, sin embargo, le agradezco ya que he aprendido muchisimo con sus videos
Soy nuevo en el mundo de la programación, y leyendo los comentarios, me pasó lo mismo que a muchos... acá hay conceptos claves y puede complicarse, no tanto por la complejidad sino por las múltiples llamadas entre objetos.
Yo lo entendí bastante bien, pero la clave a mi entender está en que uno pueda replicarlo sin mirar el video de forma pasiva. Este es un ejercicio para hacerlo uno solo desde cero porque, repito, a mi entender hay conceptos claves.
Llevo poco mas de un mes con este curso a dia de hoy me encuentro en este video. Mi pregunta: es normal a esta altura del curso entender la teoria y todo moderadamente bien pero tener el sentimiento de que si tengo que hacer esto por mi cuenta lo veo muy dificil por no decir imposible ?
Sera cuestion de tiempo y seguir practicando ?
Todos pasamos por este proceso ?
Agradesco mucho una respuesta, y felicidades a Juan por este gran curso!!
siento exactamente lo mismo! entiendo todo lo que va explicando Juan, pero si llegara a tener que hacer algo por mi misma, no sabría por donde comenzar
@@ashtangaurquiza3751 Es muy común sentir esto, hasta que no tomes un desafío o por tu cuenta hagas un proyecto, no vas a vencerlo.
Les recomiendo jugar con el codigo, pensar algun programa que les guste armar (recreativamente o no) y vean como hacerlo. Por ejemplo yo hice un gestor de carrito y la verdad que me ayudo mucho a afianzar y a poder usar todo el conocimiento que tengo
@Sakurai Chan concuerdo . Ahora me pasé a intentar aprender desarrollo front end, estoy terminando de aprender las propiedades de css y en poco sigo con js
@Sakurai Chan Hola, ya sabes como funcionan las "{}{}{}"?
Recuerdo que una vez las utilizo para un for donde puso la variable "{i}" dentro de ella, pero en este caso no me queda claro su funci\'on
@@arturo1049 Hola, Arturo. Según la documentación de Python, se deben usar los marcadores {} para indicar/marcar dónde se sustituirá la variable, además, debes indicar qué es lo que vas a formatear. O sea, es cómo darle el argumento. Por ejemplo: en el código de esta clase se tienen tres variables (self.nombre, self.genero, self.edad) las cuales serán retornadas en formato str, por ello se usa format. Los marcadores van entre comillas porque se supone que lo que ira ahí será texto, entonces, al usar los tres marcadores y darle como argumento a format (self.nombre, self.genero, self.edad) nos estaría indicando que en el primer marcador va el nombre, en el segundo el genero y en tercero la edad. La cantidad de marcadores debe corresponder con la cantidad de argumentos. Un ejemplo sencillo sería:
print('Hola, mi nombre es {}. Soy de {}, estado{}.'.format('Pedro', 'Canada', 'Antimano'))
resultado: Hola, mi nombre es Pedro. Soy de Canada, estado Antimano.
Espero haberte ayudado. Si alguien quiere anexar algo más estaría bueno.
Primer vídeo que se me ha atragantado un poquito, pero no hay nada como copiar el código, empezar a analizarlo y ver que hace cada cosa. Al final poco a poco todo va cobrando sentido.
Un curso excelente, gran trabajo y mil gracias.
es impresionante la sintaxi y combinacion de metodos que se puede realizar felicidades profe.saludos desde Perú
faz cursos de C#
saben que voy a hacer con este video todo el codigo que escribio lo envio a una imprenta es la unica forma muchachos asi puedas rayarlo colgarlo en mi pared reescribir el codigo en la pared. sacando por que hace esto y por que aquello..... Dios mio que video. espero poder cazarlo.
Al momento de definir el constructor de la clase ListaPersonas y abrir el fichero, también lo podríamos hacer de la siguiente forma.
class ListaPersonas:
personas=[]
def __init__(self):
lista=open("ficheroBin","rb+")
try:
self.personas=pickle.load(lista)
print("Se cargaron {} personas del fichero externo".format(len(self.personas)))
except:
print("El fichero está vacío")
finally:
lista.close()
del(lista)
Abrir el fichero en modo de lectura binaria, así el cursor se posiciona al inicio y omitir la línea:
lista.seek(0)
@Juan Pablo Niño Olea No sé si me lo dices irónicamente, pero gracias.
@Juan Pablo Niño Olea Vale amigo, estamos para ayudar. Saludos.
En que video, anterior este, se vio el metodo "__str__" ?? no lo enuentro
Eso mismo me estaba preguntando yo, hasta busqué algunos archivos de las clases anteriores donde pensé que posiblemente estaría y nada.
anteriormente no se había mencionado ese metodo en este curso. no tiene gran ciencia es lo que explica en el minuto 3:15 de este mismo video. es un metodo sencillo pero muy practico. saludos
Yo también creo que no lo mencionó.
@@andreskovacs1207 no lo meciono solo ha mencionado el __init__ pero saida dice que es facil
str se utiliza para concatenar un dato de del tipo string y un dato del tipo entero, ejemplo dos en el video 12.
lo vere nuevamente porque para este video hay que tener cierto nivel de programacion! estare programando asi, espero hacerlo con mucho trabajo
Mi maestro usó uno de tus videos. Sí te dio créditos.
Que de unos euros. :v
El mío se calcó todo un vídeo. Una vergüenza
Excelente material!!! Ojala más adelante puedas sacar un curso Python con MariaDB, Python con MongoDB, y cosas como Flask, Numpy y Pandas
saludos, antes que todo agradecerte por tomarte el tiempo de hacer estos videos y felicitarte por la forma tan facil de explicar las cosas para que todos entiendan, me pruguntaba si seria posible que explicaras este ejemplo con la funcion INPUT para ingresar los datos por teclado.
Gracias por el comentario. Tomo nota de tu petición, espero recordarla y hacer un vídeo donde la utilice. Un saludo!
La antepenúltima línea de código, es decir esta:
persona=Persona("Ana", "Femenino", 19)
La sustituyes por esta:
persona=Persona(input("Nombre: "), input("Sexo: "), input("Edad: "))
Vengo de C# y me pareció estupenda la explicación del código, que tiene sus "cositas" y si uno no viene con el rodaje de los videos anteriores, se puede perder.
Me salió de una, a la primera, pensando antes de ver el código explicado.
Grande profe, cuando termine todo el curso, seguro me pongo a hacer un curso "premiun" de la página a ver qué es lo que tengo que reforzar.
Uffff este sí me hizo recalentar el cerebro
X2
Esto es una maravilla
excelentemente explicado, muchas gracias
4:31 en ese momento funaron a juan porque Sandra no se identificaba con ese genero
Muchas gracias por los vídeos profe.!
En vez de copiar y pegar todo el código de vehiculos, pueden también o escribir "import SerializarObjetos
" o "from SerializarObjetos import Vehiculo" y me funcionó Marca: MAZDA
Modelo: MX5
EnMarcha: False
Acelerando: False
Frenando: False
None
Marca: SEAT
Modelo: LEON
EnMarcha: False
Acelerando: False
Frenando: False
None
Marca: RENAULT
Modelo: MEGANE
EnMarcha: False
Acelerando: False
Frenando: False
None
profesor str no lo habiamos visto en una funcion asi como el init entre renglones bajos. y el format ese no lo vimos nunca tampoco....
No entiendo lo de:
def __str__(self):
return "{} {} {}".format(self.nombre, self.genero, self. edad)
no entiendo todavía como funciona todo lo de return... y tampoco recuerdo en que video se vio con anterioridad, si alguien me puede ayudar sería grandioso. Muchas gracias de ante-mano
Allí donde veas "return" lo puedes traducir mentalmente por "devuelve". En cuanto a los símbolos {} se utilizan para extraer los strings de las expresiones a las que hace referencia. Esto lo tienes explicado en la documentación en la siguiente página: docs.python.org/2/library/string.html en el apartado 7.1.3.2
Un saludo!
Muchas gracias!!! Ahora ya entiendo
Para los que como yo no entienden mucho inglés, la explicación en castellano en la siguiente dirección docs.python.org.ar/tutorial/3/inputoutput.html
Es verdad, esto no se ha visto anteriormente
Dejo la respuesta por si alguien con el tema del Coronavirus también quiso estudiar Python.
- El return como dice Juan es para "devolver" un valor al terminar la función que estás llamando. En este caso la función def __str__ devuelve lo que quieras que salga en consola cuando quieras imprimir la clase (Generalmente si intentas imprimir una clase sin def __str__ te devuelte un mensaje en protocolo 0x). Si tienes dudas sobre esto repasa los videos sobre Clases y Objetos, por que lo vas a necesitar.
- Las llaves {} son "placeholders". O sea que podrias hacer, digamos:
print(self.nombre, self.genero, self.edad) // Otro ejemplo: print ("Mi nombre es: ", self.nombre)
Y también podrías hacer
print( "{} {} {}".format(self.nombre, self.genero, self.edad)) // Otro ejemplo: print("Mi nombre es: {}".format(self.nombre)
Es el primer video donde se enseña lo de los placeholders pero es simple, una de las maneras de imprimir variables.
Increible este codigo
man me costo mucho hoy me falta entenderlo jjjjjjjj gracias profe
Grande Juan.
cuando ejecuto el codigo del minuto 19:00 me sale este error pickle.PicklingError: Can't pickle : it's not the same object as __main__.persona
he revisado todo el codigo y está igual, pero no sé porque me sale ese error.
era un objeto que había puesto con mayúscula jaja :,v
El hombre quwe susurra codigo muchas gracias
Porfin nuevo video de python
Hola, primero agradecerte tu tiempo para enseñarnos programación, tu labor es encomiable, me está sirviendo de mucho.
Te quería hacer una pregunta, se pueden programar aplicaciones Android con Python? Y si es así me podrías orientar un poco? Gracias.
Se me ha hecho muy interesante esta lección, pero me costo entenderle ya que abarcas nuevos conceptos y métodos que no habíamos visto, como también algunas buenas practicas que llevabas en videos anteriores que aquí simplemente se olvidaron, y como muchos mencionan el método que programas para leer el archivo realmente no estas leyendo el fichero externo si no que es una copia exacta del método mostrarPersonas que es una lectura que existe en memoria de la lista que se ejecuta por el método constructor, que si bien para fines prácticos funciona e incluso puede ser interesante para optimización de recursos, creo que se pierde el porque se supone que es un método para leer el fichero externo, pero te estoy muy agradecido con tu curso esto solo tómalo como una pequeña observacion.
Solo vine a buscar si alguien estaba pensndo en eso 👍.
Saludos.
@@danielandresgiraldo6307 +1 xD
no entiendo nada, este video esta relacionado al de txt?? o sea necesito descargar la libreria y usarla con txt o esto no tiene nada que ver y esta mostrando otra forma de guardar?
en el print del __init__ no se podría concatenar directamente el nombre en vez de self.nombre?
Que tal! yo trabajo con anaconda y no me funciona ese codigo que compartiste en el video para instalar tkinder, corri el siguiente comando: conda install -c anaconda tk y aún así no me funciona, que puedo hacer?
Me ha confundido durante muchas horas que pongas "ab+" en el constructor de la class ListaPersonas. Pero al fin lo he comprendido. No añadimos nada aún poniendo "ab+", pero es la única forma de que no cree cada vez que abrimos un archivo distinto para sobreescribir el antiguo. Vaya si se aprende dándole vueltas al código durante horas, jajaja. Lo ideal sería que la primera vez que se ejecutase tuviese "wb+", y las siguientes veces "rb", pero eso lo aglutina en este caso "ab+" ya que crea un archivo si no existe y además no sobreescribe su contenido si ya existe dicho archivo. pfffffffffffff
Exacto. Yo dudo en lo siguiente: ¿Por qué es necesario a la hora de cargar el archivo poner el self.personas = pickle.load(listadepersonas)? Lo digo porque en el vídeo 39 podíamos igualarlo a lo que fuese. Aquí, sin embargo, si no se iguala a self.personas no funciona. Yo pensaba que lo relevante es lo que se carga (listadepersonas) y que se supone que ahí ya estaba almacenada la información.
Si hago, por ejemplo, la prueba de sustituir el self.personas = pickle.load(listadepersonas) por un self.prueba = pickle.load(listadepersonas) y luego imprimo ese self que he improvisado: for p in self.prueba:
print (p), pasa lo siguiente: cuando el fichero externo no está aún creado, me da error: AttributeError: 'listapersonas' object has no attribute 'prueba'. Pero cuando vuelvo a ejecutarlo, me dice que hay una persona en el archivo externo, pero si sigo añadiendo personas, nunca me sale el acumulado, sino SOLO la última que he añadido. A ver si alguien puede ayudarme, que no me gustaría quedarme con la miel en los labios con este código!
Sergio Se q puede ser un poco tarde pero la respuesta a su pregunta puede ser que al cambiar a self.prueba(variable str, no lista).. estás guardando una línea del fichero externo.. por lo cual no vas a poder ver más líneas de texto por q no puedes almacenarlo en una variable sin formato de lista...
@@Sergio-su6rt creo que el problema esta en que el init con seek(0) estamos volviendo a llevar al puntero a la 1ra linea, por lo tanto sobreescribe todo lo demas.
Hola! muy buenas la explicaciones. Oye, cuando guardo cambios y ejecuto, nombre-género y edad me salen pegados (sin espacio) qué puede ser? estoy usando Geany (IDE) en MX Linux
muchas gracias una vez mas. salud!
Buenos días, primeramente agradecido por tan valioso aporte! tengo un par de dudas, primero porque en alguna clase antes de los dos puntos colocas paréntesis y otras no, segunda, que motiva el uso del variables con "self" me confunde el ámbito de uso de este.,
me ha costado bastante entenderlo pero merece la pena
Vengo haciendo el curso que es una maravillla, pero este video pega un salto muy grande, hay que reveer muchas cosas y sobre todo no usar nombres tan similares como p, persona, personas, listapersonas, ListaPersonas, listade personas, etc. a los que estamos aprendiendo se nos dificulta mucho entender donde va cada cosa con nombres tan similares. Espero se acepten criticas constructivas. Saludos
Hola Juan, lo primero agradecerte la dedicación que le das a tus vídeos porque son de una calidad impresionante. Lo segundo, me gustaría preguntarte un par de cosas, la primera vez que creamos el método "agregarPersonas" el segundo parámetro es "p" porque así llamamos a la variable con la que nos referimos a una persona. Así mismo usamos "p" para el bucle for. Ya hacia el final del vídeo, la variable a la que hacemos referencia a la persona para de "p" a "persona". Esto me desubica un poco, ¿cómo es posible que siga funcionando el código? si la variable no es "p" y ¿porqué no utilizamos "i" para el bucle for como cuando nos lo explicaste?
Muchas gracias
Mi cerebro casi explota pero estuvo muy interesante, ademas que estoy seguro de que me servirá de mucho en el futuro
Hola, primero que todo, muchas gracias Juan por el video. Lo otro, es que me sale un error con la variable "listaDePersonas", no me la reconoce en el código y lo tengo exactamente igual que tu. Gracias.
Creía que era el único que no entendía, pero veo en los comentarios a muchos que están igual. RECOMENDACION pienso que es conveniente para cursos posteriores que se usen variables con distintos nombres, ya que si todo se llama PERSONA, la persona que ve el video queda confundida. 🤣🤣🤣.
Cuando imprimimos un objeto "print(objeto)"
Python nos devuelve una posición de memoria: ""
Pero si en la clase del objeto definimos una funcion "__str__", lo que devuelva dicha funcion (return) sera lo que se imprima al realizar "print(objeto)".
Chequea el metodo str que no este dentro del metodo init, ahi se presento correctamente
@@luigi2606 entonces como lo arreglo?
@OrigotZu gracias
Pero pq darle el formato .format() si puede simplemente hacer retirn del objeto? Si vas a imprimir asi las cosas no es necesario usar el metodo __str__ o de que me estoy perdiendo? Gracias
@@dicesdw buenos días, la razón de que utilice __str__ con un return .format() es que con los tres elementos self.nombre, self,genero y self.edad crea UNA sola cadena de caracteres, es decir, lo que hace la funcion es concatenar los 3 elementos en un string unico
Si intentas hacer un return objeto no va a funcionar, tendria que ser con un bucle for que recorra cada elemento del objeto y te daria problemas con la siguiente clase que cuyo objeto es una lista
Con el IDE DE PYTHON, no me da, pero bien igual se que esto es lo primero para hacer una base de datos....Gracias Juan y sigo tus videos...de Python....obvio jaja
Tengo un problema. En la línea print("Se cargaron {} personas del fichero externo".format(len(self.personas))) las llaves (aka placeholders, {}), no me aparecen en un color distinto, es decir, no las toma como un formato diferente, es puro texto
Mi python es versión 3.8.5
Otra duda que tengo es ¿por qué en el método __init__ se usa "ab" pero en guardarPersonasEnFicheroExterno se usa "wb", acaso el usar "wb" no debería borrar la información del fichero?
una cosa
en el caso de querer borrar una persona del fichero en vez de agregarlas como se haría?
no se si me he perdido de algo pero no encuentro una solución 😔
muy buenas explicaciones :)
Saludos Juan, porque me impreme asi ahora todo:
('Se ha creado una persona nueva con el nombre de ', 'Sandra')
con parentesis y comillas.
Hola Juan, tengo un pregunta, por que proposito tiene tener dos metodos o funciones como "mostrarInfoFicheroExterno" y "mostrarPersonas" es que en mi opinion ellos hacen lo mismo. Me puedes aclarar esta duda por favor??
Hacen lo mismo creo que mejor borrar uno.
EL metodo mostrarPersonas era del anterior , cuando habia instanciado p Sandra ,Antonio y Ana ,en el ultimo tramo del video ya no esta porque lo habia borrado ya no es necesario usar ese metodo
juan un duro
GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOODDDDDDDD!!!!!
Gran vídeo y muy útil :D
tengo una duda ya en el mundo laboral se aplica este método de guardado permanente?
Hola, tengo una pregunta. ¿Por qué crea la lista personas fuera del constructor y no dentro junto con listaDePersonas?
el tema del __str__, lo busque en los otros videos y no lo encontre, en que video esta espeficicamente? y lo otro para que meter el tema del self.persona=pickle, con el try y except si nolo usaremos, es como complicarse la vida, no seria mejor primero crear lo que ocuparesmo y no agregar mas lineas de codigo innecesarias, de todas maneras gracias por el video.
Con respecto a la función __str__, en python (como en la gran mayoría de los lenguajes) hay algo que se llama elevación de tipo o autocasting, en los lenguajes si tienes una función que espera un parámetro de tipo float y le pasas un int, el compilador/interprete al notar que requiere un float pero le pasa el int, convierte el int a float y la función trabaja adecuadamente por que no hay perdida de información, si es al revés, tienes una función que requiere int y le pasas float, la mayoría de los lenguajes darán error en compilación o en ejecución por que no saben que hacer con el float ya que no hay elevación de tipo de float a int. Teniendo esto, en Python puedes tener tu propio "Autocasting", al crear una función _str__(self), esta función debe devolver una cadena, así cuando una función requiere entre sus parámetros una cadena llamara automáticamente la función __str_ para hacer un autocasting y así la función que requiere una cadena reciba una cadena. Ej:
class dump():
def __init__(self):
self._Soy_ = "Soy de la clase Dump"
def __str__(self):
return self._Soy_
class dump1():
def __init__(self):
self._Soy_ = "Soy de la clase Dump1"
d = dump()
d1 = dump1()
print(d)
print(d1)
En el ejemplo ya que dump tiene _str_ definido, al requerir una cadena print, python realiza un autcasting de dump a str, cosa que no sucede con dump1.
En python print requiere una cadena siempre y hay autocasting a cadena de listas, tuplas, ints y si no me equivoco todos los tipos/clases predefinidos en python.
pregunta ¿que función tiene entonces el metodo "mostrarPersonas"???
me podrían recordar en que videos vemos funciones tipo ___str__? necesito repasarlo para entender mejor el capitulo al igual que ese formato que tampoco recuerdo muy bien:'v, ese "{} {} {}".format()
Hola, alguien sabe en que vídeo vimos la función ".format" no la recuerdo. O bien si alguien me puede decir donde poder leer sobre ella? Muchas gracias!
En los diccionarios!
Realmente creo que no la vimos pero es simple. En este caso lo que va entre los parentesis del .format() es lo que se va a mostrar en los {} puestos anteriormente.
Hola Juan primero que nada agradecer el trabajo que haces, es realmente increíble e invaluable tu ayuda a la comunidad. Te quería consultar por los métodos mostrarPersonas y mostrarInfoFicheroExterno, no estarían haciendo lo mismo? Entiendo que uno es solo para mostrar la lista pero el otro no debería abrir el archivo para luego mostrarlo. Seguramente en algún paso me perdí.
Creo que sí. Agregué un debajo del y me dio tmb la lista solo sin el texto "La información del fichero externo es la siguiente: "
tengo que repasar todo lo aprendido desde POO para entender mucho mejor este ejercicio, gracias profe :3, me podría explicar deducida mente para que sirve una clase si no es molestia, lo quisiera entender por favor
Me quedó una duda que no pude despejar navegando por internet, así que espero que pueda ayudarme ! . El modo de apertura de los archivos en Python son iguales a C o C++ ?, me refiero a que, por ejemplo en C, cuando se usa "Wb" en caso de que el archivo externo no exista, se crea uno nuevo pero si este ya existiera se sobreescribe, perdiendo los datos anteriores, pero por lo que vi en este vídeo, eso no pasó ! . Estoy realmente confundido con los modos de apertura, agradecería si pudieras ayudarme, Saludos de Argentina !
Estoy justo terminando de ver el video 40j, muchas gracias por tus excelentes explicaciones! Espero que sigas así! Se verá matrices más adelante en el curso? Se la ve complicada con Python. Saludos y Exitos
Si con matrices te refieres a los array, python no posee una estructura de matrices nativamente aunque tiene "lista" la cual tiene un uso parecido a los array puedes también usar las lista de forma multidimensional. En los ejemplos de este mismo video la lista están trabajando muy parecido a lo que hacen los arrays.
Me refiero a arrays multidimensionales claro, quisiera saber como se hacen en python y poder ejercitarlo.
Si no me equivoco, creo que el profesor lo explicó en su momento cuando abarcó el tema de la lista. De igual forma aquí va un ejemplo.
my_list = [
[15, 2, 8, 5, 3],
[3, 3, 7],
[9, 1, 16, 13],
[],
[5]
]
for column in my_list:
for item in column:
print(item, end=" ")
print()
Nota: puede recorrer la lista por su índice como también incluir cuanta lista dentro de lista desee. La lista puede tener integer, float o string.
Hola! , como puedo hacer para extraer la información del fichero por medio de un buscador?
Hola, tengo una duda desde que inicio el curso. los metodos me retornan None, lo estoy manejando con mensajes, cadena vacia "" o valor asociado al metodo. Pero en caso de ser un tipo void de c# que en python no existe, como lo manejo?
Hablo de void, pq es lo mas parecido a lo que has realizado.
Y no hay alguna manera de guardar en el archivo binario variables int y float? No se puede entonces usar metodos getters y setters en los objetos, eso lo complica
Mi código estaba mal, guarda bien. Me lio ese método. Gracias por los vídeos