Restructure content and add notes from HolaMundo

Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
This commit is contained in:
2023-05-20 09:36:26 +02:00
parent 64ed03f811
commit f4e9797c4b
430 changed files with 889 additions and 24 deletions

View File

@@ -0,0 +1,73 @@
"""
Abrir y manipular archivos
"""
# Abrir documento
archivo = open('prueba.txt')
# Leer todo el documento
archivo_total = archivo.read()
# print(archivo_total)
print(archivo_total)
archivo.close()
print('-'*25)
# Con este método se lee una sola línea
mi_archivo = open('prueba.txt')
una_linea = mi_archivo.readline()
print(una_linea.upper())
print(una_linea)
una_linea = mi_archivo.readline()
# Con el método rstrip no se efectuará salto de línea
print(una_linea.rstrip())
una_linea = mi_archivo.readline()
print(una_linea)
# close cierrar el archivo para no ocupar
# el espacio de memoria que deja abierto en open.
# Es importante usarlo siempre
mi_archivo.close()
print('-'*25)
archivo2 = open('prueba.txt')
# Se puede iterar por líneas
for l in archivo2:
print('Aquí dice que : ' + l)
archivo2.close()
print('-'*25)
arch = open('prueba.txt')
# Con este método se meten las líneas en una lista.
# Hay que tener en cuenta que estos métodos que cargan
# todo el archivo deben usarse con modelación,
# ya que cargan mucho la memoria sobretodo si son
# ficheros grandes y el mismo muchas veces.
todas = arch.readlines()
print(todas)
arch.close()
print('-'*25)
# Imprimir la segunda linea
txt = open('prueba.txt')
list_txt = txt.readlines()
cuenta_lineas = 0
for l in list_txt:
cuenta_lineas += 1
if cuenta_lineas == 2:
print(l)
print()
txt.close()

View File

@@ -0,0 +1,21 @@
"""
Crear y escribir archivos
Sintaxis:
mi_archivo = open('archivo.txt',modo_apetura)
Argumentos de open()
r - Solo lectura - Por defecto
w - Solo escritura. Si el archivo ya existe se resetea
a - Añadir excritura, se posiciona al final.
x - Creación
2 Métodos de escritura
write() Para escribir normal
writelines Para añadir texto en lista
"""
mi_archivo = open('prueba.txt', 'w')
mi_archivo.write('\nEste texto se escribe desde python\n')
mi_archivo.writelines(['Hola', 'mundo', 'aquí', 'estoy'])
mi_archivo.close()

View File

@@ -0,0 +1,58 @@
"""
Directorios
Importaremos dos librerias:
Path de pathlib
os
"""
import os
from pathlib import Path
# Obtener el directorio de trabajo actual
ruta = os.getcwd()
print(ruta)
# Cambiar de directorio
ruta2 = os.chdir(
'/home/v/Documents/projectes/python/python_total/dia_06/Europa/')
# # Leer el fichero de esa ruta
archivo = open('Consejos.txt')
print(archivo.read())
archivo.close()
# Crear rutas nuevas
os.makedirs('/home/v/Documents/projectes/python/python_total/dia_06/Africa/')
# Separar el path y el nombre del archivo
ruta3 = '/home/v/Documents/projectes/python/python_total/dia_06/Europa/Consejos.txt'
# # Nombre base del fichero o directorio de la ruta
elemento = os.path.basename(ruta3)
print(elemento)
# # ruta completa menos base
elemento2 = os.path.dirname(ruta3)
print(elemento2)
# # ruta completa en un tuple
elemento3 = os.path.split(ruta3)
print(elemento3)
# Eliminar carpeta
os.rmdir('/home/v/Documents/projectes/python/python_total/dia_06/Africa/')
# Se importa el objeto Path de la libreria pathlib para los siguientes ejercicios
# Con Path buscará en cualquier SO
carpeta = Path(
'/home/v/Documents/projectes/python/python_total/dia_06/Europa')
archivo2 = carpeta / 'Consejos.txt'
mi_archivo = open(archivo2)
print(mi_archivo.read())
mi_archivo.close()

View File

@@ -0,0 +1,37 @@
"""
pathlib
Las que no tienen paréntesis son funciones, no métodos
Se puede transformar a una ruta de windows importando PureWindowsPath
PureWindowsPath(carpeta)
"""
from pathlib import Path
carpeta = Path(
'/home/v/Documents/projectes/python/python_total/dia_06/prueba.txt')
print(carpeta.read_text())
# Nombre fichero
print(carpeta.name)
# sufijo. Extensión
print(carpeta.suffix)
# Nombre sin la terminación
print(carpeta.stem)
# Ver si existe el fichero con un if
if not carpeta.exists():
print("Este archivo no existe")
else:
print("Genial, existe")
opcion = input("Escoger categoria: ")
if opcion.isnumeric():
print('Es')
else:
print("no")

View File

@@ -0,0 +1,66 @@
"""
path
"""
# Ruta relativa
from pathlib import Path
guia = Path("Barcelona", "Sagrada_Familia.txt")
print(guia)
print("-"*25)
# Ruta absoluta al directorio de usuario activo
base = Path.home()
# Con lo cual, si lo unimos a la ruta relativa
# nos dará una ruta absoluta
# (siguiento el path que le hemos dado)
# Admite cadenas como objetos de path
# podemos concatenar varios trozos de paths
mi_ruta = Path('Documents/projectes/python/python_total/dia_06')
guia2 = Path(base, mi_ruta, "Europa", "España", Path(
"Barcelona", "Sagrada_Familia.txt"))
print(base)
print(guia2)
print("-"*25)
# Utilizando la ruta absoluta anterior,
# podemos cambiar el fichero de destino
guia3 = guia2.with_name("La_Pedrera.txt")
print(guia3)
print("-"*25)
# Acceder a directorios intermedios
# con parent accedemos al path superior cada vez que lo usamos
# Igual que los dos puntos en cd. (..)
print(guia2.parent.parent.parent)
print("-"*25)
# Enumerar todos los archivos txt
# # Primero hacemos la ruta
guia4 = Path(base, mi_ruta, "Europa")
# # Con el método glob recorremos cada objeto de la ruta
# # con un for
for txt in Path(guia4).glob("*.txt"):
print(txt)
print("-"*25)
# # Recursivo o_O
for txt in Path(guia4).glob("**/*.txt"):
print(txt)
print("-"*25)
# Para acceder a rutas relativas a partir de una base de rutas absolutas
guia5 = Path("Europa", "España", "Barcelona", "Sagrada_Familia.txt")
en_europa = guia5.relative_to("Europa")
en_espania = guia5.relative_to("Europa", "España")
print(en_europa)
print(en_espania)

View File

@@ -0,0 +1,23 @@
"""
Limpiar consola
Introducir comandos a la terminal o_O
"""
from os import system
def limpiar_consola():
system('tree')
system('sleep 2')
system('clear')
nombre = input("Dime tu nombre: ")
print("Ahora te voy a mostrar directorios y ficheros durante 2 segundos")
system('sleep 2')
limpiar_consola()
print(f"¿Te quedo claro {nombre}?")

View File

@@ -0,0 +1,318 @@
"""
Programa día 6 - Recetario
"""
import os
import shutil
from pathlib import Path
"""
Variables
"""
ruta_base = Path('Recetas')
limpiar = 'clear'
sleep = 'sleep 2'
"""
Funciones
"""
def clearConsole():
# Función limpiar consola
os.system(limpiar)
def bienvenida():
clearConsole()
# bienvenida al usuario
print('\n', '#' * 29, '\n # Bienvenid@ al Recetario #\n', '#' * 29)
os.system(sleep)
clearConsole()
info()
def info():
# informar la ruta de acceso al directorio donde se encuentran las recetas
print('*' * 17, '\n* INFORMACIÓN *\n*****************\n')
print('Las recetas están en las siguientes rutas:')
for ruta in Path(ruta_base).glob('*'):
print(f'- {ruta}')
# informar cuántas recetas hay en total dentro de esas carpetas
num_recetas = 0
for ruta in Path(ruta_base).glob('**/*.txt'):
num_recetas += 1
# Mostra menú de opciones
print(f'\nEn total, existen {num_recetas} recetas.\n')
menu_opciones()
def menu_opciones():
comando = ''
while comando.lower() != 's':
print("""********************
* MENÚ PRINCIPAL *
********************
i\t\tInformación
m\t\tMostrar recetas
cr\t\tCrear receta
cc\t\tCrear nueva categoria
er\t\tEliminar receta
ec\t\tEliminar categoria
s\t\tsalir
""")
comando = input('Selecciona una opción: ')
clearConsole()
if comando == 'i':
# Información
info()
elif comando == 'm':
com = ""
while com != 's':
# Mostrar recetas
cat = escoger_categoria()
rec = escoger_receta(cat)
mostrar_receta(rec)
com = input("¿Quieres salir de \"Mostrar recetas\"? (s/n) ")
if com == 'n':
continue
elif com == 's':
print('\n¡Ok! Volvemos al menú pricipal\n')
break
else:
print('Disculpa, ingresa un valor válido')
continue
elif comando == 'cr':
com = ""
while com != 's':
# Crear receta
cat = escoger_categoria()
crear_receta(cat)
com = input("¿Quieres salir de \"Crear receta\"? (s/n) ")
if com == 'n':
continue
elif com == 's':
print('\n¡Ok! Volvemos al menú pricipal\n')
break
else:
print('Disculpa, ingresa un valor válido')
continue
elif comando == 'cc':
# Crear nueva categoria
crear_categoria()
elif comando == 'er':
com = ""
while com != 's':
# Eliminar receta
cat = escoger_categoria()
rec = escoger_receta(cat)
eliminar_receta(rec)
com = input("¿Quieres salir de \"eliminar receta\"? (s/n) ")
if com == 'n':
continue
elif com == 's':
print('\n¡Ok! Volvemos al menú pricipal\n')
break
else:
print('Disculpa, ingresa un valor válido')
continue
elif comando == 'ec':
com = ""
while com != 's':
# Eliminar categoria
cat = escoger_categoria()
eliminar_categoria(cat)
com = input("¿Quieres salir de \"eliminar categoria\"? (s/n) ")
if com == 'n':
continue
elif com == 's':
print('\n¡Ok! Volvemos al menú pricipal\n')
break
else:
print('Disculpa, ingresa un valor válido')
continue
elif comando == 's':
# salir
break
else:
print('Disculpa, ingresa un valor válido')
os.system(sleep)
clearConsole()
info()
def escoger_categoria():
# Opción 1
# Pregunta qué categoría elige (carnes, ensaladas, etc.),
print('\nCategorías:')
num_menu = 0
lista_categorias = []
for ruta in Path(ruta_base).glob('*'):
num_menu += 1
lista_categorias.append(ruta.name)
print(f'\t{num_menu}\t {lista_categorias[num_menu - 1]}')
print('\n\ts\t salir de la opción \"escoger categoria\"\n')
opcion = ''
while opcion != 's':
opcion = input('Escoger categoria: ')
if opcion.isnumeric():
if int(opcion) in range(1, num_menu + 1):
categoria = lista_categorias[int(opcion) - 1]
return categoria
else:
print(f'\nEl número {opcion} no está en el menú\n')
continue
elif opcion.lower() == 's':
return False
else:
print('Disculpa, ingresa un valor válido')
continue
return False
def escoger_receta(catego):
if catego == False:
return False
else:
# una vez que el usuario elija una, preguntar qué receta quiere leer,
print(
f'\nEn la categoria \"{catego.upper()}\" hay las siguientes recetas: ')
num_menu = 0
lista_recetas = []
for rut in Path(ruta_base, catego).glob('*'):
num_menu += 1
lista_recetas.append(rut.name)
print(f'\t{num_menu}\t {lista_recetas[num_menu - 1]}')
print('\n\ts\t salir de la opción \"escoger receta\"\n')
opcion = ''
while opcion != 's':
opcion = input('Escoger receta: ')
if opcion.isnumeric():
if int(opcion) in range(1, num_menu + 1):
receta = lista_recetas[int(opcion) - 1]
ruta_escogida = Path(ruta_base, catego, receta)
# Devuelve receta escogida
return ruta_escogida
else:
print(f'\nEl número {opcion} no está en el menú\n')
continue
elif opcion.lower() == 's':
return False
else:
print('Disculpa, ingresa un valor válido')
continue
def mostrar_receta(ruta_escogida):
# mostrar contenido receta.
if ruta_escogida == False:
print()
else:
clearConsole()
print(
f'\nRECETA \"{ruta_escogida.stem.upper()}\"\n{ruta_escogida.read_text()}\n')
def crear_receta(categoria):
# Opción 2
# Elegir una categoría,
# va a pedir que escriba el nombre y el contenido de la nueva receta que quiere crear,
# El programa va a crear ese archivo en el lugar correcto.
if categoria == False:
print()
else:
catego = Path(ruta_base, categoria)
nombre = input('¿Cómo le quieres llamar a la receta? ')
nueva_receta = nombre + ".txt"
os.chdir(catego)
receta = open(nueva_receta.capitalize(), 'x')
receta.close()
nuevo_texto = open(nueva_receta.capitalize(), 'w')
nuevo_texto.write(input('Escribe el contenido de la receta: '))
nuevo_texto.close()
os.chdir('../..')
print(f'\nReceta de \"{nombre}\" creada con éxito\n')
def crear_categoria():
# Opcion 3
# Preguntar el nombre de la categoría que quiere crear
# Generar una carpeta nueva con ese nombre.
nueva_categ = input('¿Cómo quieres llamar la nueva categoria? ')
catego = Path(ruta_base, nueva_categ.capitalize())
os.makedirs(catego)
print(f'\nCategoria \"{nueva_categ}\" creada con éxito.\n')
def eliminar_receta(ruta_escogida):
# Opción 4
# hará lo mismo que la opción uno,
# pero en vez de leer la receta, la va a eliminar.
if ruta_escogida == False:
print()
else:
print(
f'Se ha eliminado la RECETA \"{ruta_escogida.stem.upper()}\"\n')
os.remove(ruta_escogida)
def eliminar_categoria(categoria):
# Opción 5
# Preguntar qué categoría quiere eliminar
# Eliminar categoria
if categoria == False:
print()
else:
catego = Path(ruta_base, categoria)
print(
f'Se ha eliminado la CATEGORIA \"{catego.stem.upper()}\"\n')
shutil.rmtree(catego)
"""
El programa se dispara en la función bienvenida
"""
bienvenida()
print('\n¡Ciao!\n')

View File

@@ -0,0 +1 @@
Estos son los consejos

View File

@@ -0,0 +1 @@
Esta es La Pedrera

View File

@@ -0,0 +1 @@
Esta es la sagrada Familia

View File

@@ -0,0 +1 @@
Este es el Museo del Prado

View File

@@ -0,0 +1 @@
Estas son las normativas

View File

@@ -0,0 +1,209 @@
# Día 6 - Programa un recetario
## Índice
- [Día 6 - Programa un recetario](#día-6---programa-un-recetario)
- [Índice](#índice)
- [6.1. - Abrir y leer archivos](#61---abrir-y-leer-archivos)
- [6.2. - Crear y escribir archivos](#62---crear-y-escribir-archivos)
- [6.3. - Directorios](#63---directorios)
- [6.4. - pathlib](#64---pathlib)
- [6.4.1. - Navegación](#641---navegación)
- [6.4.2. - Algunos métodos y propiedades sobre objetos Path](#642---algunos-métodos-y-propiedades-sobre-objetos-path)
- [6.5. - Path](#65---path)
- [6.6. - Limpiar la consola](#66---limpiar-la-consola)
- [6.7. - Archivos + funciones](#67---archivos--funciones)
- [6.8. - Proyecto del Día 6](#68---proyecto-del-día-6)
- [Ficheros y documentación del día 6](#ficheros-y-documentación-del-día-6)
## 6.1. - Abrir y leer archivos
La manipulación de archivos desde Python se engloba bajo las funciones de E/S (entrada/salida) o I/O (en inglés: input/output). Comenzaremos explorando las funciones utilizadas para abrir, leer y cerrar archivos:
- **open(archivo, modo)**: abre un archivo, y devuelve un objeto de tipo archivo sobre el que pueden aplicarse métodos
- **read(bytes)**: devuelve un número especificado de bytes del archivo. De manera predeterminada (sin indicar un valor en el argumento bytes), devolverá el archivo completo (equivalente a escribir -1).
- **readline(bytes)**: devuelve una línea del archivo, limitada por el número indicado en el parámetro tamaño (en bytes).
- **readlines(bytes)**: devuelve una lista que contiene cada una de las líneas del archivo como item de dicha lista. Si el tamaño excede lo indicado en el parámetro bytes, no se devolverán líneas adicionales.
- **close( )**: cierra el archivo abierto, tal que no puede ser leído o escrito luego de cerrado. Es una buena práctica utilizar este método si ya no será necesario realizar acciones sobre un archivo.
Por lo general, un byte equivale a un caracter.
## 6.2. - Crear y escribir archivos
Para escribir en un archivo desde Python, deberemos elegir con cuidado el parámetro "modo de apertura".
```python
open(arhivo, modo)
```
Parámetros de *modo* de apertura:
- **"r"** - Read (Lectura) - Predeterminado. Permite leer pero no escribir, y arroja un error si el archivo no existe.
- **"a"** - Append (Añadir) - Abre el archivo para añadir líneas a continuación de la última que ya exista en el mismo. Crea un archivo en caso de que el mismo no exista.
- **"w"** - Write (Escritura) - Abre o crea un archivo (si no existe previamente) en modo de escritura, lo que significa que cualquier contenido previo se sobreescribirá.
- **"x"** - Create (Creación) - Crea un archivo, y arroja un error si el mismo ya existe en el directorio.
El método **write( )** escribe un texto especificado en el argumento sobre el archivo.
**writelines(lista)** recibe el texto a ser escrito en forma de lista.
## 6.3. - Directorios
Trabajar sobre archivos que se encuentran en directorios diferentes al de nuestro código requiere del soporte del módulo OS, que contiene una serie de funciones para interactuar con el sistema operativo.
```python
import os
```
- **os.getcwd()**: obtiene y devuelve el directorio de trabajo actual. Será el mismo en el que corre el programa si no se ha modificado.
- **os.chdir(ruta)**: cambia el directorio de trabajo a la ruta especificada
- **os.makedirs(ruta)**: crea una carpeta, así como todas las carpetas intermedias necesarias de acuerdo a la ruta especificada.
- **os.path.basename(ruta)**: dada una ruta, obtiene el nombre del archivo (nombre de base)
- **os.path.dirname(ruta)**: dada una ruta, obtiene el directorio (carpeta) que almacena el archivo
- **os.path.split(ruta)**: devuelve una tupla que contiene dos elementos: el directorio, y el nombre de base del archivo.
- **rmdir(ruta)**: elimina el directorio indicado en la ruta.
En Windows, es necesario indicar las rutas con dobles barras invertidas (\\) para que sean correctamente interpretadas por Python.
## 6.4. - pathlib
El módulo pathlib, disponible desde Python 3.4, permite crear objetos Path, generando rutas que pueden ser interpretadas por diferentes sistemas operativos y cuentan con una serie de propiedades útiles.
```python
from pathlib import Path
ruta = Path("C:/Users/Usuario/Desktop")
```
A partir de una semántica sencilla, devuelve una ruta que el sistema puede comprender. Por ejemplo, en Windows, devolverá: C:\Users\Usuario\Desktop y en Mac: C:/Users/Usuario/Desktop
### 6.4.1. - Navegación
```python
ruta = Path("C:/Users/Usuario/Desktop") / "archivo.txt"
```
Es posible concatenar objetos Path y strings con el delimitador "/" para construir rutas completas.
### 6.4.2. - Algunos métodos y propiedades sobre objetos Path
- **read_text( )**: lee el contenido del archivo sin necesidad de abrirlo y cerrarlo
- **name**: devuelve el nombre y extensión del archivo
- **suffix**: devuelve la extensión del archivo (sufijo)
- **stem**: devuelve el nombre del archivo sin su extensión (sufijo)
- **exists( )**: verifica si el directorio o archivo al que referencia el objeto Path existe y devuelve un booleano de acuerdo al resultado (True/False)
## 6.5. - Path
La clase Path permite representar rutas de archivos en el sistema de archivos de nuestro sistema operativo. Se destaca por su legibilidad frente a alternativas semejantes.
*base = Path.home()* → Devuelve un objeto Path representando el directorio base del usuario
```python
ruta = Path(base, "Europa", "Barcelona", "SagradaFamilia.txt")
```
Se aceptan strings y otros objetos Path
```python
ruta2 = ruta.with_name("LaPedrera.txt")
```
Devuelve un nuevo objeto Path cambiando únicamente el nombre de archivo
Cada invocación de la propiedad parent devuelve la ruta de jerarquía inmediata superior
```shell
C:\Users\...
|_ Europa
|_Barcelona
|_SagradaFamilia.txt
|_LaPedrera.txt
```
```python
continente = ruta.parent.parent
print(continente)
```
C:\Users\...\Europa
Devuelve el conjunto de archivos que coinciden con el "patrón"
```python
Path(ruta).glob("*.txt")
Path(ruta).glob("**/*.txt")
```
Búsqueda recursiva en subdirectorios
## 6.6. - Limpiar la consola
Para controlar la información mostrada al usuario en consola podemos limpiarla, eliminando los diferentes mensajes que han aparecido conforme se va ejecutando el programa.
```python
from os import system
```
En Unix/Linux/MacOS:
```python
system("clear")
```
En DOS/Windows:
```python
system("cls")
```
## 6.7. - Archivos + funciones
**Recordatorio**: puedes crear funciones para que ejecuten código cada vez que sean invocadas, evitando repeticiones y facilitando su lectura. Esto aplica para todo Python, y desde luego también cuando manipulamos archivos.
¿Qué hace la función? - ¿Qué información necesita recibir?
```python
def manipular_archivo(ruta, nombre_archivo):
# Código que convierte las entradas en salidas
return
```
¿Cuál debe ser su salida?
## 6.8. - Proyecto del Día 6
Vas a crear un administrador de recetas. Básicamente esto es un programa a través del cual un usuario puede leer, crear y eliminar recetas que se encuentren en una base de datos.
Entonces, antes de comenzar, es necesario que crees en tu ordenador un directorio en la carpeta base de tu ordenador, con una carpeta llamada Recetas, que contiene cuatro carpetas y cada una de ellas contiene dos archivos de texto. Dentro de los archivos puedes escribir lo que quieras, puede ser la receta en sí misma o no, pero eso no es importante para este ejercicio. Lo importante es que escribas algo para poder leerlas cuando haga falta o, si prefieres, también puedes directamente descargar y descomprimir el archivo adjunto a esta elección y ubicarlo en tu directorio raíz si no tienes ganas de crearlo tú mismo.
![](../img/dia06_01.png)
Aquí viene la consigna: tu código le va a dar primero la bienvenida al usuario, le va a informar la ruta de acceso al directorio donde se encuentra nuestra carpeta de recetas, le va a informar cuántas recetas hay en total dentro de esa carpeta, y luego le va a pedir que elija una de estas opciones que tenemos aquí:
1. La opción 1 le va a preguntar qué categoría elige (carnes, ensaladas, etc.), y una vez que el usuario elija una, le va a preguntar qué receta quiere leer, y mostrar su contenido.
2. En la opción 2 también se le va a hacer elegir una categoría, pero luego le va a pedir que escriba el nombre y el contenido de la nueva receta que quiere crear, y el programa va a crear ese archivo en el lugar correcto.
3. La opción 3 le va a preguntar el nombre de la categoría que quiere crear y va a generar una carpeta nueva con ese nombre.
4. La opción 4, hará todo lo mismo que la opción uno, pero en vez de leer la receta, la va a eliminar.
5. La opción 5, le va a preguntar qué categoría quiere eliminar
6. Finalmente, la opción 6 simplemente va a finalizar la ejecución del código.
Este programa tiene algunas cuestiones importantes a considerar:
- Cada vez que el usuario realice exitosamente cualquiera de sus opciones, el programa le va a pedir que presione alguna letra para poder volver al inicio, por lo que el código se va a repetir una y otra vez, hasta que el usuario elija la opción 6. Esto implica que todo el menú debe estar dentro de un loop while que se repita una y otra vez hasta que no se cumpla la condición de que la elección del usuario sea 6
- Sería genial que cada vez que el usuario vuelva al menú inicial, la consola limpie la pantalla para que no se acumulen las ejecuciones anteriores. Recuerda que cuentas con system para poder reiniciar la pantalla y comenzar a mostrar todo desde cero.
- Si bien te he enseñado muchos métodos para administrar archivos, para este ejercicio vas a necesitar algunos que aún no has visto, pero que están incluidos en los objetos con los que hemos estado trabajando, por lo que en ocasiones deberás buscar entre los métodos que trae Path, por ejemplo, leer la documentación y aprender a implementarlo. Yo sé que sería mucho más fácil que yo te enseñe todo acerca de cada uno de los métodos, pero recuerda que también es importante que a medida que avanzamos vayas aprendiendo a gestionar tu propio aprendizaje. Es parte de la vida real y cotidiana del programador en el mundo en que vivimos.
- Utiliza muchas funciones, todas las que creas necesario. Las funciones ayudan a compartir, mentalizar el código y hacerlo mucho más dinámico, ordenado, repetible y más fácil de mantener.
- Recuerda comenzar con un diagrama de flujos o un gráfico hecho a mano que te permita visualizar con más facilidad el árbol de decisiones que necesitas ejecutar en tu código. Sin eso te vas a enredar más rápido de lo que crees y se te va a complicar bastante.
- Y, por último, no te frustres si no logras hacerlo o completarlo. Si logras hacer una parte, un par de funciones, algunas cosas sí y otras no, está muy bien. Siempre estamos aprendiendo y parte de aprender es no saber.
Mis desafíos siempre te van a estar ubicando en el borde de tus capacidades, sacándote del lugar de confort para que tu cerebro tenga que desconcertarse y descubrir cómo hacer algo nuevo. Tu avanza hasta donde puedas.
## Ficheros y documentación del día 6
- [01_abrir_manipular_archivos.py](01_abrir_manipular_archivos.py)
- [02_crear_escribir_archivos.py](02_crear_escribir_archivos.py)
- [03_directorios.py](03_directorios.py)
- [04_pathlib.py](04_pathlib.py)
- [05_path.py](05_path.py)
- [06_limpiar_consola.py](06_limpiar_consola.py)
- [07_programa06.py](07_programa06.py)
- [Europa](Europa/)
- [prueba.txt](prueba.txt)
- [Recetas](Recetas/)
- [Recetas.zip](Recetas.zip)
[Documentación del día](../doc_curso/06_recetario/)
---
Enlaces a todos los días: [dia 1 - creador de nombres](../dia_01/README.md) / [dia 2 - calculador de comisiones](../dia_02/README.md) / [dia 3 - analizador de texto](../dia_03/README.md) / [dia 4 - juego "adivina el número"](../dia_04/README.md) / [dia 5 - juego "El ahorcado"](../dia_05/README.md) / [dia 6 - recetario](../dia_06/README.md) / [dia 7 - cuenta bancaria](../dia_07/README.md) / [dia 8 - consola de turnos](../dia_08/README.md) / [dia 9 - buscador de números de serie](../dia_09/README.md) / [dia 10 - juego "Invasión espacial"](../dia_10/README.md) / [dia 11 - web scraping](../dia_11/README.md) / [dia 12 - gestor de restaurantes](../dia_12/README.md) / [dia 13 - asistente de voz](../dia_13/README.md) / [dia 14 - controlador de asistencia](../dia_14/README.md) / [dia 15 - machine learning](../dia_15/README.md) / [dia 16 - aplicación web de tareas pendientes](../dia_16/README.md)

Binary file not shown.

View File

@@ -0,0 +1 @@
Esta es la receta del Entrecot al Malbec

View File

@@ -0,0 +1 @@
Esta es la receta del Matambre a la Pizza

View File

@@ -0,0 +1 @@
Esta es la receta de la Ensalada Griega

View File

@@ -0,0 +1 @@
Esta es la receta de la Ensalada Mediterranea

View File

@@ -0,0 +1 @@
Esta es la receta de los Canelones de Espinaca

View File

@@ -0,0 +1 @@
Esta es la receta de los Ravioles de Ricotta

View File

@@ -0,0 +1 @@
Esta es la receta de la Compota de Manzana

View File

@@ -0,0 +1 @@
Esta es la receta de FLAN de HUEVOS

View File

@@ -0,0 +1 @@
Esta es la receta de la Tarta de Frambuesa

View File

@@ -0,0 +1 @@
Las TRUFAS están buenísimas

View File

@@ -0,0 +1 @@
Esto es el contenido de CESPED. Enjoy!

View File

@@ -0,0 +1,3 @@
Este texto se escribe desde python
Holamundoaquíestoy