Buenas noches, por favor ayuda con este inconveniente: Cada uno `.main-section` debe tener un `id`

Tell us what’s happening:
Cada uno .main-section debe tener un id que coincida con el texto de su primer elemento secundario, reemplazando cualquier espacio en el texto del elemento secundario con guiones bajos ( _ ) para la identificación.

**Your code **

<h3>Documentación Python</h3>
<li>

  <a class="nav-link" href="#Introduccion"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Introducción</font></font></a>

</li>

<li>

  <a class="nav-link" href="#Hola_Mundo"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Hola Mundo</font></font></a>

</li>

<li>

  <a class="nav-link" href="#Comentarios"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Comentarios</font></font></a>

</li>

<li>

  <a class="nav-link" href="#Variables"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Variables</font></font></a>

</li>

<li>

  <a class="nav-link" href="#Declaracion_Variables"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Declaración de Variables</font></font></a>

</li>

<li>

  <a class="nav-link" href="#Constantes"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Constantes</font></font></a>

</li>

<li>

  <a class="nav-link" href="#Identacion"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Identación</font></font></a>

</li>

<li>

  <a class="nav-link" href="#Funciones"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Funciones</font></font></a>

</li>

<li>

  <a class="nav-link" href="#Referencias"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Referencias</font></font></a>

</li>
<header><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Introducción</font></font></header>

<div>

  <p>Python es un lenguaje de programación de alto nivel cuya máxima es la legibilidad del código. Las principales características de Python son las siguientes:</p>

  <ul>

    <li><strong>Es multiparadigma: </strong>Soporta la programación imperativa, programación orientada a objetos y funcional.</li>

    <li><strong>Es multiplataforma: </strong> Se puede encontrar un intérprete de Python para los principales sistemas operativos: Windows, Linux y Mac OS. Además, se puede reutilizar el mismo código en cada una de las plataformas.</li>

    <li><strong>Es dinámicamente tipado:</strong> Es decir, el tipo de las variables se decide en tiempo de ejecución.</li>

    <li><strong>Es fuertemente tipado: </strong>No se puede usar una variable en un contexto fuera de su tipo. Si se quisiera, habría que hacer una conversión de tipos.</li>

    <li><strong>Es interpretado:</strong> El código no se compila a lenguaje máquina.</li>

  </ul>

</div>
<header><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Hola Mundo</font></font></header>

<div>

  <p>En este artículo trabajaremos con IDLE, el entorno integrado de desarrollo y aprendizaje que se instala automáticamente al instalar Python. Usaremos esta herramienta para escribir y ejecutar nuestro código.</p>

  <code>print("¡Hello World!")</code>

  <p><strong>Dato:</strong> El mensaje "¡Hola, Mundo!" debe estar rodeado por comillas simples o dobles porque es un valor de tipo str ("string" en inglés o "cadena de caracteres" en español), un tipo de datos usado para representar secuencias de caracteres en el código (por ejemplo, texto).</p>

</div>
<header><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Comentarios</font></font></header>

<div>

  <p>Como cualquier otro lenguaje de programación, Python permite escribir comentarios en el código. Los comentarios son útiles para explicar por qué estamos programando algo de un modo concreto o añadir indicaciones. Te aseguro que son de utilidad cuando se retoma un programa o aplicación en el futuro</p>

  <p>Los comentarios son ignorados por el intérprete de Python. Solo tienen sentido para los programadores.</p>

  <p>Para añadir un comentario a tu código simplemente comienza una línea con el carácter #:</p><code># Esta línea es un comentario

  </code>

</div>
<header><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Variables</font></font></header>

<div>

  <p>Es un nombre que se refiere a un objeto que reside en la memoria. El objeto puede ser de alguno de los tipos vistos (número o cadena de texto), o alguno de los otros tipos existentes en Python.</p>

  <p>Cada variable debe tener un nombre único llamado identificador. Eso es muy de ayuda pensar las variables como contenedores que contienen data el cual puede ser cambiado después a través de técnicas de programación.</p>

</div>
<header><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Declaración de variables</font></font></header>

<div>

  <p>A continuación, se creará un par de variables a modo de ejemplo. Una de tipo cadenas de caracteres y una de tipo entero:</p>

  <code>c = "Hola Mundo" # cadenas de caracteres</code>

  <p><code>e = 23</code></p>

</div>
<header><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Constantes</font></font></header>

<div>

  <p>Un pequeño número de constantes vive en el espacio de nombres incorporado. Son las siguientes:</p>

  <ul>

    <li>

      <h4><strong>Non Implemented</strong></h4>

        <p>Este tipo tiene un solo valor. Hay un solo objeto con este valor. Se accede a este objeto a través del nombre incorporado «NotImplemented». Los métodos numéricos y los métodos de comparación enriquecidos (como __eq__(), __lt__() y amigos), para indicar que la comparación no se implementa con respecto al otro tipo, es decir, pueden devolver este valor si no implementan la operación para los operandos proporcionados. (El intérprete luego intentará la operación reflejada, o algún otro respaldo «fallback», dependiendo del operador). Su valor de verdad es True.</p>

      <code>type(NotImplemented)

<type ‘NotImplementedType’>

    </li>

    <li>

      <h4><strong>None</strong></h4>

        <p>Este tipo tiene un solo valor. Se utiliza para indicar la ausencia de un valor en muchas situaciones, por ejemplo, se devuelve desde las funciones que no devuelven nada explícitamente. Su valor de verdad es False.</p>

      <code>type(None)

<type ‘NoneType’>

    </li>

    <li><h4><strong>Ellipsis</strong></h4>

        <p>Este tipo tiene un solo valor. Hay un solo objeto con este valor. Se accede a este objeto elipsis a través del nombre incorporado «Ellipsis». Se utiliza para indicar la presencia de la sintaxis «...» en una porción o la notación de corte extendida. Su valor de verdad es True.</p>

      <code>type(Ellipsis)

<type ‘ellipsis’>

    </li>

    <li>

      <h4><strong>False</strong></h4>

        <p>Valor falso tipo booleano</p>

      <code>type(Falso)

<type ‘bool’>

    </li>

    <li>

      <h4><strong>True</strong></h4>

        <p>Valor verdadero tipo booleano</p>

      <code>type(Verdadero)

<type ‘bool’>

    </li>

    <li>

       <h4><strong>__debug__</strong></h4>

        <p>Esta constante su valor es True si Python no se inició con una opción -O.</p>

    </li>

  </ul>

  <p><strong>Nota:</strong>

Los nombres none y debug no se pueden reasignar (asignaciones a ellos, incluso como un nombre de atributo, causa una excepción SyntaxError), por lo que pueden considerarse constantes «verdaderas».

</div>
<header><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Identación</font></font></header>

<div>

  <p>Lo último que veremos sobre sentencias en esta introducción a Python es cómo se pueden agrupar en bloques de código.</p>

  <p>Un bloque de código es un grupo de sentencias relacionadas bien delimitadas. A diferencia de otros lenguajes como JAVA o C, en los que se usan los caracteres {} para definir un bloque de código, en Python se usa la indentación o sangría.</p>

  <p>La sangría o indentación consiste en mover un bloque de texto hacia la derecha insertando espacios o tabuladores al principio de la línea, dejando un margen a la izquierda.</p>

</div>
<header><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Funciones</font></font></header>

<div>

  <p>Las funciones son bloques de código que se pueden reutilizar simplemente llamando a la función. Esto permite la reutilización de código simple y elegante sin volver a escribir explícitamente secciones de código. Esto hace que el código sea más legible, facilita la depuración y limita los errores de escritura.</p>

  <p>Las funciones en Python se crean usando la palabra clave def, seguida de un nombre de función y parámetros de función entre paréntesis.</p>

  <p>Una función siempre devuelve un valor. La función utiliza la palabra clave return  para devolver un valor; si no desea devolver ningún valor, se devolverá el valor predeterminado None.</p>

  <p>El nombre de la función se usa para llamar a la función, pasando los parámetros necesarios entre paréntesis.</p>

  <code># esta es una función básica de suma

  </code>

  <p><code>def suma(a, b):</code></p>

  <p><code>return a + b</code></p>

  <p><code>result = suma(1, 2)</code></p>

  <p><code># result = 3</code></p>

</div>
<header><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Referencias</font></font></header>

<div>

  <p>Toda la documentación de esta página fue tomada de <a href="https://docs.python.org/es/3/" target="_blank"><p>Python Documentation</p></a>

  </p>

</div>