Aprende
Python escribiendo código y visualizando su ejecución
Esta aplicación educativa libre permite a los profesores y estudiantes escribir programas Python directamente en el navegador web, ejecutar esos programas, ir paso a paso hacia adelante y hacia atrás en la ejecución y ver el estado de todas las estructuras de datos en tiempo de ejecución.
En vez de mostrar una sosa terminal basada en texto, el Tutor Python Online proporciona una rica visualización de las variables, objetos y marcos de pila. Por ejemplo, el siguiente código:
x = ["Alicia", "Beatriz", "Carlos"] y = x z = ["Alicia", "Beatriz", "Carlos"]
se visualizará como el siguiente diagrama HTML, que muestra adecuadamente las relaciones de los alias:

¡Juega con el Tutor Python Online!
Resuelve
problemas de programación escribiendo código en Python
El Tutor Python Online permite también a los estudiantes practicar resolviend problemas de programación, como los que se les pueden plantear en los ejercicios de clase o en entrevistas para trabajos técnicos.
Proporciona interfaces basados en web para escribir soluciones y probar el código, ejecutando una serie de entradas de prueba preparadas y mostrando qué pruebas pasaron y cuáles fallaron.

La anterior captura de pantalla muestra las pruebas pasadas y las falladas. El usuario puede hacer click en el botón "Debug me" al lado de las caras tristes para depurar el programa que ha fallado sobre una prueba en particular.
He aquí algunos problemas de ejemplo con los que practicar:
Depurar
programas dados que casi funcionan adecuadamente
Usando las capacidades de ejecución paso-a-paso bidireccional y de visualización de estructuras de datos del Tutor Python Online, los estudiantes pueden practicar con la depuración, una importante habilidad que raramente se trata en los problemas de programación basados en web.
Pueden trabajar sobre problemas como, "Cambia como máximo dos líneas de este código para hacer que este programa casi correcto funcione adecuadamente." Aquí tienes algunos ejemplos de problemas de depuración:
Optimizar
programas dados para que se ejecuten usando menos instrucciones
Los estudiantes pueden practicar la refactorización de programas ya correctos para que se ejecuten más rápido y con menos instrucciones.
Pueden trabajar sobre problemas como, "Optimiza este programa de forma que finalice correctamente tras ejecutar menos de 50 líneas de código Python". He aquí algunos ejemplos de problemas de optimización:
Crear
nuevos problemas y prácticas en un formato de texto plano
Los profesores pueden crear fácilmente nuevos problemas de prácticas escribiéndolos en un formato de texto plano ligero. Por ejemplo, reverse.txt proporciona la especificación del problema Lista al revés.
El formato de especificación de problemas permite añadir restricciones, como "La diferencia de código debe ser de menos de N líneas" (para problemas de depuración) o "La ejecución debe terminar tras ejecutar como máximo M líneas de código Python" (para problemas de optimización).
Planeo añadir soporte para restricciones semánticas, como "No permitir que el programa cree ninguna estructura de datos auxiliar", que podría ser usada en problemas como "Mezcla estas dos listas in-place sin crear nuevas listas temporales".