Introducción a Python para desarrolladores de complementos de NVDA
Este curso constituye el primer paso de tu camino al desarrollo de complementos de NVDA si no sabes nada de programación. A lo largo de diez módulos, aprenderás los fundamentos de la programación en Python, el lenguaje con el que está construido NVDA, para que puedas entender cómo funcionan los complementos existentes y, con el tiempo, crear los tuyos propios. Los ocho primeros módulos se centran en el uso del lenguaje y el intérprete con NVDA, y en los dos últimos presentamos Urllib, para que aprendas a lanzar peticiones a un servicio de Internet, y WXPython, el motor usado por NVDA para la creación de interfaces gráficas.
Nota: este curso se ha creado con la asistencia de inteligencia artificial y revisión humana en profundidad. Los contenidos han sido redactados a partir de los datos de entrenamiento del modelo de lenguaje. Si algún contenido de este curso te resulta familiar, y crees que está inspirado en un curso real escrito a mano, por favor háznoslo saber.
Tu matrícula
Para matricularte, inicia sesión o crea una cuenta.
Contenido del curso
Módulo 1: Introducción
- Unidad: Bienvenida y presentación del curso
- Unidad: Perfil del alumno
- Unidad: Objetivos del curso
- Unidad: Cómo usar estos materiales con un lector de pantalla
- Unidad: Qué es la programación
- Unidad: Lenguajes compilados frente a lenguajes interpretados
- Unidad: Qué es Python
- Unidad: Por qué Python es el lenguaje de NVDA
- Unidad: Conclusiones
- Ejercicio: Ejercicio 1
- Ejercicio: Ejercicio 2
- Ejercicio: Ejercicio 3
- Ejercicio: Ejercicio 4
- Unidad: Glosario del módulo 1
Módulo 2: Entorno de trabajo accesible
- Unidad: Introducción
- Unidad: Qué vamos a instalar y por qué
- Unidad: Instalación de Python 3.13
- Unidad: Verificación de la instalación de Python
- Unidad: Instalación de Notepad++
- Unidad: Configuración de Notepad++ para este curso
- Unidad: Cómo trabajaremos con estos dos programas
- Unidad: Glosario
Módulo 3: La consola de Python
- Unidad: Objetivos del módulo
- Unidad: ¿Qué es la consola de Python?
- Unidad: El símbolo `>>>`: el indicador principal
- Unidad: El símbolo `...`: continuación de una instrucción
- Unidad: La función `print()`
- Unidad: El historial de órdenes
- Unidad: Cómo leer un error en la consola
- Unidad: Navegación por la consola con NVDA
- Unidad: Buenas prácticas al trabajar en la consola
- Ejercicio: Ejercicio 1
- Ejercicio: Ejercicio 2
- Ejercicio: Ejercicio 3
- Ejercicio: Ejercicio 4
- Ejercicio: Ejercicio 5
- Ejercicio: Ejercicio 6 (repaso combinado)
- Unidad: Documentación de referencia
- Unidad: Conclusiones
Módulo 4: Tipos de datos y variables
- Unidad: Objetivos del módulo
- Unidad: ¿Qué es una variable?
- Unidad: Reglas y convenciones para nombrar variables
- Unidad: Tipos de datos básicos
- Unidad: La función `type()`
- Unidad: Comentarios con `#`
- Unidad: Conversión de tipos (casting)
- Unidad: Pedir datos al usuario con `input()`
- Unidad: Cadenas con variables: introducción a las f-strings
- Unidad: Un breve adelanto: tipos de datos compuestos
- Unidad: Buenas prácticas al trabajar con variables y tipos de datos
- Ejercicio: Ejercicio 1
- Ejercicio: Ejercicio 2
- Ejercicio: Ejercicio 3
- Ejercicio: Ejercicio 4
- Ejercicio: Ejercicio 5
- Ejercicio: Ejercicio 6 (repaso combinado)
- Unidad: Documentación de referencia
- Unidad: Conclusiones
Módulo 5: Control de flujo
- Unidad: Objetivos del módulo
- Unidad: De la consola al archivo: por qué cambiamos de herramienta
- Unidad: Operadores de comparación
- Unidad: Operadores lógicos
- Unidad: La sentencia if
- Unidad: El bucle while
- Unidad: El bucle for
- Unidad: break, continue y pass
- Unidad: El operador condicional en una línea
- Unidad: Buenas prácticas al escribir estructuras de control
- Ejercicio: Ejercicio 1
- Ejercicio: Ejercicio 2
- Ejercicio: Ejercicio 3
- Ejercicio: Ejercicio 4
- Ejercicio: Ejercicio 5
- Ejercicio: Ejercicio 6
- Ejercicio: Ejercicio 7
- Ejercicio: Ejercicio 8 (repaso combinado)
- Unidad: Documentación de referencia
- Unidad: Conclusiones
Módulo 6: Funciones y módulos
- Unidad: Objetivos del módulo
- Unidad: Por qué organizar el código en funciones
- Unidad: Definir y llamar una función
- Unidad: Parámetros: funciones que reciben datos
- Unidad: El valor de retorno: return
- Unidad: Parámetros con valor por defecto
- Unidad: Documentar una función: el docstring
- Unidad: Ámbito de las variables: local y global
- Unidad: El operador módulo (%)
- Unidad: Módulos: reutilizar código ya escrito
- Unidad: Crear un módulo propio
- Unidad: Buenas prácticas al escribir funciones y módulos
- Ejercicio: Ejercicio 1
- Ejercicio: Ejercicio 2
- Ejercicio: Ejercicio 3
- Ejercicio: Ejercicio 4
- Ejercicio: Ejercicio 5
- Ejercicio: Ejercicio 6
- Ejercicio: Ejercicio 7
- Ejercicio: Ejercicio 8
- Ejercicio: Ejercicio 9 (módulo propio)
- Ejercicio: Ejercicio 10 (repaso combinado)
- Unidad: Documentación de referencia
- Unidad: Conclusiones
Módulo 7: Estructuras de datos
- Unidad: Objetivos del módulo
- Unidad: Por qué hacen falta estructuras de datos
- Unidad: Operaciones avanzadas con cadenas de texto
- Unidad: Listas
- Unidad: Tuplas
- Unidad: Diccionarios
- Unidad: Conjuntos (set)
- Unidad: Estructuras anidadas
- Unidad: Buenas prácticas y cuándo usar cada estructura
- Ejercicio: Ejercicio 1
- Ejercicio: Ejercicio 2
- Ejercicio: Ejercicio 3
- Ejercicio: Ejercicio 4
- Ejercicio: Ejercicio 5
- Ejercicio: Ejercicio 6
- Ejercicio: Ejercicio 7
- Ejercicio: Ejercicio 8
- Ejercicio: Ejercicio 9
- Ejercicio: Ejercicio 10
- Ejercicio: Ejercicio 11 (estructuras anidadas)
- Ejercicio: Ejercicio 12 (repaso combinado)
- Unidad: Documentación de referencia
- Unidad: Conclusiones
Módulo 8: Programación orientada a objetos
- Unidad: Objetivos del módulo
- Unidad: Por qué programación orientada a objetos
- Unidad: Clases y objetos
- Unidad: Métodos de instancia
- Unidad: Atributos y métodos de clase
- Unidad: Encapsulación
- Unidad: Herencia
- Unidad: El método mágico `__str__`
- Unidad: Buenas prácticas y cuándo usar POO
- Ejercicio: Ejercicio 1
- Ejercicio: Ejercicio 2
- Ejercicio: Ejercicio 3
- Ejercicio: Ejercicio 4
- Ejercicio: Ejercicio 5
- Ejercicio: Ejercicio 6
- Ejercicio: Ejercicio 7
- Ejercicio: Ejercicio 8
- Ejercicio: Ejercicio 9
- Ejercicio: Ejercicio 10
- Ejercicio: Ejercicio 11 (encapsulación con name mangling)
- Ejercicio: Ejercicio 12 (repaso combinado)
- Unidad: Documentación de referencia
- Unidad: Conclusiones
Módulo 9: La biblioteca urllib
- Unidad: Objetivos del módulo
- Unidad: Qué es urllib y para qué sirve
- Unidad: El submódulo `urllib.request`: hacer una petición GET
- Unidad: Trabajar con datos JSON
- Unidad: Construir URLs con parámetros: `urllib.parse`
- Unidad: Cabeceras personalizadas con `Request`
- Unidad: Manejo de errores de red
- Unidad: Enviar datos con POST
- Unidad: Descargar archivos con `urlretrieve()`
- Unidad: Buenas prácticas
- Ejercicio: Ejercicio 1
- Ejercicio: Ejercicio 2
- Ejercicio: Ejercicio 3
- Ejercicio: Ejercicio 4
- Ejercicio: Ejercicio 5
- Ejercicio: Ejercicio 6
- Ejercicio: Ejercicio 7
- Ejercicio: Ejercicio 8
- Ejercicio: Ejercicio 9 (repaso combinado)
- Unidad: Documentación de referencia
- Unidad: Conclusiones
Módulo 10: Introducción a wxPython
- Unidad: Objetivos del módulo
- Unidad: Qué es wxPython e instalación
- Unidad: La aplicación wx mínima: `wx.App`, `Frame` y `MainLoop()`
- Unidad: `Frame`: la ventana principal
- Unidad: Organizar el contenido: `Panel` y `Sizer`
- Unidad: Etiquetas y campos de texto: `StaticText` y `TextCtrl`
- Unidad: Botones y eventos: `Button` y `Bind()`
- Unidad: Más controles de entrada: `CheckBox`, `RadioButton`, `Choice` y `SpinCtrl`
- Unidad: La barra de menús: `MenuBar` y `Menu`
- Unidad: Cuadros de diálogo: `Dialog`
- Unidad: Vistas de lista: `ListCtrl`
- Unidad: Vistas de árbol: `TreeCtrl`
- Unidad: Pestañas: `Notebook`
- Unidad: Aplicación completa: gestor de contactos accesible
- Unidad: Buenas prácticas de accesibilidad en wxPython
- Ejercicio: Ejercicio 1
- Ejercicio: Ejercicio 2
- Ejercicio: Ejercicio 3
- Ejercicio: Ejercicio 4
- Ejercicio: Ejercicio 5
- Unidad: Documentación de referencia
- Unidad: Conclusiones
Módulo 11: Finalización del curso
- Ejercicio: Despedida y próximos pasos