Skip to content

Latest commit

 

History

History
275 lines (180 loc) · 11.4 KB

Quiz5.rst

File metadata and controls

275 lines (180 loc) · 11.4 KB

Quiz - 5

.. tabbed:: quiz5_1

    .. tab:: Ejercicio 1_1

        ..  clickablearea:: q5_1
            :question: El siguiente programa declara una variable en el lugar equivocado del código. Su tarea es seleccionar la declaración incorrecta y seleccionar la línea correcta donde debería ir.
            :iscode:
            :feedback: Recuerda, que no puedes usar una variable sin haberla declarado anteriormente.

            :click-incorrect:x = 2:endclick:
            :click-correct:     :endclick:
            :click-incorrect:si y > 8 entonces::endclick:
                :click-correct:y = 5:endclick:
                :click-incorrect:y = y * 2:endclick:

            :click-incorrect:en caso contrario::endclick:
                :click-incorrect:x = x * 2::endclick:
                :click-incorrect:imprime (x + y)::endclick:


    .. tab:: Ejercicio 1_2

        ..  activecode:: q5_2
            :nocodelens:

            Traduzca el programa anterior (con la declaración en el lugar correcto) al lenguaje Python utilizando el siguiente bloque de código. |br|
            ~~~~

            ====


    .. tab:: Ejercicio 1_3

        ..  fillintheblank:: q5_3

            ¿Qué imprime el programa anterior?

            -   :9: Tu respuesta es correcta, ¡buen trabajo!
                :.*: Tu respuesta es incorrecta, intenta nuevamente.


.. tabbed:: quiz5_2

    .. tab:: Ejercicio 2_1

        ..  code-block:: none

            para i = 1 hasta 9:
                si i != 3 entonces:
                    para j = 1 hasta 6:
                        imprimir("Hola")


    .. tab:: Ejercicio 2_2

        ..  activecode:: q5_4
            :nocodelens:

            Traduzca el programa anterior al lenguaje Python utilizando el siguiente bloque de código. |br|
            **Nota**: en nuestro pseudolenguaje, el ciclo incluye los extremos, es decir, 1 a 4 significa 1, 2, 3, 4. |br|
            ~~~~

            ====


    .. tab:: Ejercicio 2_3

        ..  fillintheblank:: q5_5

            ¿Cuántas veces el programa anterior imprime ``"Hola"``?

            -   :48: Tu respuesta es correcta, ¡buen trabajo!
                :.*: Tu respuesta es incorrecta, intenta nuevamente.


.. tabbed:: quiz5_3

    .. tab:: Ejercicio 3_1

        ..  activecode:: q5_6
            :nocodelens:

            Desarrolle la función ``pares_divisibles_7`` que recibe como parámetros dos enteros positivos, ``inicio`` y ``fin`` que representan el inicio y el fin de un intervalo de números, la función tiene que devolver la cantidad de números que son pares y también divisibles por 7. |br| |br|
            Ejemplos: |br|
            ``pares_divisibles_7(1, 7)`` -> ``0`` |br|
            ``pares_divisibles_7(25, 123)`` -> ``7`` |br|
            ``pares_divisibles_7(13, 245)`` -> ``17`` |br|

            ~~~~
            def pares_divisibles_7(inicio, fin):



            ====
            from unittest.gui import TestCaseGui


            class myTests(TestCaseGui):
                def testOne(self):
                    self.assertEqual(pares_divisibles_7(1, 7), 0, "Esperado: 0")
                    self.assertEqual(pares_divisibles_7(25, 123), 7, "Esperado: 7")
                    self.assertEqual(pares_divisibles_7(13, 245), 17, "Esperado: 17")
                    self.assertEqual(pares_divisibles_7(1300, 2460), 83, "Esperado: 83")
                    self.assertEqual(pares_divisibles_7(1, 2460), 175, "Esperado: 175")


            myTests().main()


    .. tab:: Ejercicio 3_2

        ..  fillintheblank:: q5_7

            Utilice la función creada en el ejercicio anterior para responder ¿Cuántos números son pares y también divisibles por 7 entre 1067 y 3627 (inclusive)?

            -   :183: Tu respuesta es correcta, ¡buen trabajo!
                :.*: Tu respuesta es incorrecta, intenta nuevamente.


.. tabbed:: quiz5_4

    .. tab:: Ejercicio 4_1

        ..  activecode:: q5_8
            :nocodelens:

            Daniela es una persona muy supersticiosa. Para ella, un número tiene **suerte** si contiene el dígito ``2`` pero no el ``7``. Ella además es muy curiosa y está interesada en saber ¿cuántos números de la suerte hay en un intervalo de números (incluido los extremos)?. Para ello le ha solicitado a usted que haga la función llamada ``cuantos_tienen_suerte``,  que recibe como parámetros dos enteros positivos, ``inicio`` y ``fin`` que representan el inicio y el fin de un intervalo de números, la función tiene que devolver la cantidad de números que tienen **suerte**. |br| |br|
            Ejemplos: |br|
            ``cuantos_tienen_suerte(1, 7)`` -> ``1`` |br|
            ``cuantos_tienen_suerte(1, 20)`` -> ``3`` |br|
            ``cuantos_tienen_suerte(25, 123)`` -> ``16`` |br|
            ``cuantos_tienen_suerte(13, 245)`` -> ``74`` |br|

            ~~~~
            def cuantos_tienen_suerte(inicio, fin):



            ====
            from unittest.gui import TestCaseGui


            class myTests(TestCaseGui):
                def testOne(self):
                    self.assertEqual(cuantos_tienen_suerte(1, 1), 0, "Esperado: 0")
                    self.assertEqual(cuantos_tienen_suerte(1, 7), 1, "Esperado: 1")
                    self.assertEqual(cuantos_tienen_suerte(1, 20), 3, "Esperado: 3")
                    self.assertEqual(cuantos_tienen_suerte(25, 123), 16, "Esperado: 16")
                    self.assertEqual(cuantos_tienen_suerte(1300, 2460), 481, "Esperado: 481")
                    self.assertEqual(cuantos_tienen_suerte(13, 245), 74, "Esperado: 74")


            myTests().main()


    .. tab:: Ejercicio 4_2

        ..  fillintheblank:: q5_9

            Utilice la función creada en el ejercicio anterior para responder ¿Cuántos números tienen suerte entre 18644 y 33087 (inclusive)?

            -   :7995: Tu respuesta es correcta, ¡buen trabajo!
                :.*: Tu respuesta es incorrecta, intenta nuevamente.


.. tabbed:: quiz5_5

    .. tab:: Ejercicio 5_1

        ..  activecode:: q5_10
            :nocodelens:

            En el tranquilo pueblo rural de *Ponteironuloville*, todos los teléfonos tienen 6 dígitos. La compañía telefónica establece las siguientes reglas sobre los números: |br|

            1. No puede haber dos dígitos idénticos consecutivos, porque esto es aburrido
            2. La suma de los dígitos debe ser par, porque esto es legal
            3. El último dígito no puede ser el mismo que el primero, porque eso es mala suerte.

            Entonces, dadas estas reglas perfectamente razonables, bien diseñadas y maduras, desarrolle la función que se llama ``es_numero_ponteironuloville`` que recibe una cadena de enteros positivos y devuelve ``True`` si el número es valido de acuerdo a las reglas de *Ponteironuloville* y ``False`` en caso contrario.
            |br| |br|

            Ejemplos: |br|
            ``es_numero_ponteironuloville("123457")`` -> ``True`` |br|
            ``es_numero_ponteironuloville("234562")`` -> ``False`` |br|
            ``es_numero_ponteironuloville("222222")`` -> ``False`` |br|
            ``es_numero_ponteironuloville("123456")`` -> ``False`` |br|
            ``es_numero_ponteironuloville("312214")`` -> ``False`` |br|
            ``es_numero_ponteironuloville("312312")`` -> ``True`` |br|

            ~~~~
            def es_numero_ponteironuloville(numero):



            ====
            from unittest.gui import TestCaseGui


            class myTests(TestCaseGui):
                def testOne(self):
                    self.assertEqual(es_numero_ponteironuloville("123457"), True, "Esperado: True")
                    self.assertEqual(es_numero_ponteironuloville("234562"), False, "Esperado: False")
                    self.assertEqual(es_numero_ponteironuloville("304706"), True, "Esperado: True")
                    self.assertEqual(es_numero_ponteironuloville("222222"), False, "Esperado: False")
                    self.assertEqual(es_numero_ponteironuloville("123456"), False, "Esperado: False")
                    self.assertEqual(es_numero_ponteironuloville("312214"), False, "Esperado: False")
                    self.assertEqual(es_numero_ponteironuloville("312312"), True, "Esperado: True")
                    self.assertEqual(es_numero_ponteironuloville("131313"), True, "Esperado: True")
                    self.assertEqual(es_numero_ponteironuloville("249184"), True, "Esperado: True")
                    self.assertEqual(es_numero_ponteironuloville("012445"), False, "Esperado: False")


            myTests().main()


    .. tab:: Ejercicio 5_2

        ..  activecode:: q5_11
            :nocodelens:
            :include: q5_10

            Sabiendo que la función ``split()`` divide una cadena en múltiples cadenas, utilice la función creada en el ejercicio anterior (**OBLIGATORIO** haberla terminado antes y haber pasado todas las pruebas) para terminar la función ``contar_validos`` que devuelve la cantidad de números válidos de la lista de números dada en el siguiente bloque de código. |br| |br|
            **Nota**: la lista de números es una cadena, utilice sabiamente la función ``split()`` para obtener un arreglo de cadenas.
            ~~~~
            lista_numeros = """236043 237330 239636 240138 242123 246224 249183 252936
                254711 257200 257607 261424 263814 266794 268649 273050
                275001 277606 278997 283331 287104 287953 289137 291591
                292559 292946 295180 295566 297529 300400 304707 306931
                310638 313595 318449 319021 322082 323796 326266 326880
                327249 329914 334392 334575 336723 336734 338808 343269
                346040 350113 353631 357154 361633 361891 364889 365746
                365749 366426 369156 369444 369689 372896 374983 375223
                379163 380712 385640 386777 388599 389450 390178 392943
                394742 395921 398644 398832 401149 402219 405364 408088
                412901 417683 422267 424767 426613 430474 433910 435054
                440052 444630 447852 449116 453865 457631 461750 462985
                463328 466458 469601 473108 476773 477956 481991 482422
                486195 488359 489209 489388 491928 496569 496964 497901
                500877 502386 502715 507617 512526 512827 513796 518232
                521455 524277 528496 529345 531231 531766 535067 535183
                536593 537360 539055 540582 543708 547492 550779 551595
                556493 558807 559102 562050 564962 569677 570945 575447
                579937 580112 580680 582458 583012 585395 586244 587393
                590483 593112 593894 594293 597525 598184 600455 600953
                601523 605761 608618 609198 610141 610536 612636 615233
                618314 622752 626345 626632 628889 629457 629643 633673
                637656 641136 644176 644973 647617 652218 657143 659902
                662224 666265 668010 672480 672695 676868 677125 678315"""

            def contar_validos():
                contador = 0
                """
                    Escriba su codigo aqui, use la variable creada
                """
                return contador
            ====


    .. tab:: Ejercicio 5_3

        ..  fillintheblank:: q5_12

            Utilice la función creada en el ejercicio anterior para responder ¿Cuántos números de la lista son válidos de acuerdo a las reglas de *Ponteironuloville*?

            -   :39: Tu respuesta es correcta, ¡buen trabajo!
                :.*: Tu respuesta es incorrecta, intenta nuevamente.