Skip to content

Latest commit

 

History

History
253 lines (173 loc) · 10.5 KB

Quiz11.rst

File metadata and controls

253 lines (173 loc) · 10.5 KB

Quiz - 11

.. tabbed:: quiz11

    .. tab:: Ejercicio 1

        ..  activecode:: q11_1
            :nocodelens:

            Desarrolle la función ``verbo`` que recibe una cadena ``s`` como parámetro. Si la longitud de la cadena es al menos 3, debe devolver la cadena original concatenando ``"ing"`` al final. Si la cadena ``s`` ya termina en ``"ing"``, concatene la cadena ``"ly"``. Si la longitud de la cadena es menor que 3, devuelve la cadena original. |br| |br|
            Ejemplos: |br|
            ``verbo("singing")`` -> ``"singingly"`` |br|
            ``verbo("travel")`` -> ``"traveling"`` |br|
            ``verbo("do")`` -> ``"do"`` |br|

            ~~~~
            def verbo(s):



            ====
            from unittest.gui import TestCaseGui


            class myTests(TestCaseGui):
                def testOne(self):

                    self.assertEqual(verbo("hail"), "hailing", "Esperado: hailing")
                    self.assertEqual(verbo("swiming"), "swimingly", "Esperado: swimingly")
                    self.assertEqual(verbo("do"), "do", "Esperado: do")
                    self.assertEqual(verbo("singing"), "singingly", "Esperado: singingly")
                    self.assertEqual(verbo("travel"), "traveling", "Esperado: traveling")
                    self.assertEqual(verbo("lly"), "llying", "Esperado: llying")
                    self.assertEqual(verbo("ing"), "ingly", "Esperado: ingly")


            myTests().main()


    .. tab:: Ejercicio 2

        ..  activecode:: q11_2
            :nocodelens:

            Desarrolle la función ``no_es_malo`` que recibe una cadena ``s`` como parámetro. La función debe buscar la primera aparición de la cadena ``"no es"`` y la última aparición de la cadena ``"malo"`` o la cadena ``"mala"``, si alguna de ellas aparece después de la primera, reemplace ``"no es" ... "malo"`` o ``"no es" ... "mala"`` por las cadenas ``"es bueno"`` o ``"es buena"`` respectivamente, luego devuelva el resultado. |br| |br|
            Ejemplos: |br|
            ``no_es_malo("El té no es malo")`` -> ``"El té es bueno"`` |br|
            ``no_es_malo("La película no es mala")`` -> ``"La película es buena"`` |br|
            ``no_es_malo("El precio de esta casa no es para nada malo")`` -> ``"El precio de esta casa es bueno"`` |br|
            ``no_es_malo("El teléfono es malo")`` -> ``"El teléfono es malo"`` |br|

            ~~~~
            def no_es_malo(s):



            ====
            from unittest.gui import TestCaseGui


            class myTests(TestCaseGui):
                def testOne(self):

                    self.assertEqual(
                        no_es_malo("El televisor no es malo"),
                        "El televisor es bueno",
                        "Esperado: El televisor es bueno"
                    )
                    self.assertEqual(
                        no_es_malo("El asado de la cena no es malo!"),
                        "El asado de la cena es bueno!",
                        "Esperado: El asado de la cena es bueno!"
                    )
                    self.assertEqual(
                        no_es_malo("El té no está caliente"),
                        "El té no está caliente",
                        "Esperado: El té no está caliente"
                    )
                    self.assertEqual(
                        no_es_malo("La película no es mala"),
                        "La película es buena",
                        "Esperado: La película es buena"
                    )
                    self.assertEqual(no_es_malo("no es para nada malo"), "es bueno", "Esperado: es bueno")
                    self.assertEqual(no_es_malo("no es malo"), "es bueno", "Esperado: es bueno")
                    self.assertEqual(no_es_malo("malo"), "malo", "Esperado: malo")
                    self.assertEqual(no_es_malo("no"), "no", "Esperado: no")
                    self.assertEqual(no_es_malo("NO"), "NO", "Esperado: NO")
                    self.assertEqual(no_es_malo("MALO"), "MALO", "Esperado: MALO")
                    self.assertEqual(no_es_malo("NO es MALO"), "NO es MALO", "Esperado: NO es MALO")
                    self.assertEqual(no_es_malo("no es MALO"), "no es MALO", "Esperado: no es MALO")
                    self.assertEqual(no_es_malo("NO es malo"), "NO es malo", "Esperado: NO es malo")
                    self.assertEqual(no_es_malo("no es malo ni mala"), "es buena", "Esperado: es buena")
                    self.assertEqual(no_es_malo("no es ni mala ni malo"), "es bueno", "Esperado: es bueno")


            myTests().main()


    .. tab:: Ejercicio 3

        ..  activecode:: q11_3
            :nocodelens:

            Desarrolle la función ``inicio_final`` que recibe dos cadenas ``a`` y ``b``. Las cadenas tienen que ser dividas en dos, si alguna de las cadenas tiene un número impar de caracteres, la primera mitad será la subcadena más larga (por ejemplo ``perro`` se dividirá entre: ``per`` y ``ro``). Dada las dos cadenas, devuelva una nueva cadena formada de la siguiente manera ``a_inicio + b_inicio + a_final + b_final``. |br| |br|
            Ejemplos: |br|
            ``inicio_final("abcd", "1234")`` -> ``"ab12cd34"`` |br|
            ``inicio_final("abc", "1234")`` -> ``"ab12c34"`` |br|
            ``inicio_final("abc", "123")`` -> ``"ab12c3"`` |br|

            ~~~~
            def inicio_final(a, b):



            ====
            from unittest.gui import TestCaseGui


            class myTests(TestCaseGui):
                def testOne(self):

                    self.assertEqual(inicio_final("abcd", "xy"), "abxcdy", "Esperado: abxcdy")
                    self.assertEqual(inicio_final("abcde", "xyz"), "abcxydez", "Esperado: abcxydez")
                    self.assertEqual(inicio_final("a", "b"), "ab", "Esperado: ab")
                    self.assertEqual(inicio_final("ac", "b"), "abc", "Esperado: abc")
                    self.assertEqual(inicio_final("a", "bc"), "abc", "Esperado: abc")
                    self.assertEqual(inicio_final("", ""), "", "Esperado: ''")
                    self.assertEqual(inicio_final("a", ""), "a", "Esperado: 'a'")
                    self.assertEqual(inicio_final("", "b"), "b", "Esperado: 'b'")
                    self.assertEqual(
                        inicio_final("Kitten", "Donut"),
                        "KitDontenut",
                        "Esperado: KitDontenut"
                    )


            myTests().main()


    .. tab:: Ejercicio 4

        ..  activecode:: q11_4
            :nocodelens:

            Desarrolle la función ``cuantos_ceros`` que dado un entero ``n`` positivo, devuelva la cantidad de ceros al final del entero ``n``. |br| |br|
            Ejemplos: |br|
            ``cuantos_ceros(10010)`` -> ``1`` |br|
            ``cuantos_ceros(908007000)`` -> ``3`` |br|

            ~~~~
            def cuantos_ceros(n):



            ====
            from unittest.gui import TestCaseGui


            class myTests(TestCaseGui):
                def testOne(self):

                    self.assertEqual(cuantos_ceros(10100100010000), 4, "Esperado: 4")
                    self.assertEqual(cuantos_ceros(90000000000000000010), 1, "Esperado: 1")
                    self.assertEqual(cuantos_ceros(10), 1, "Esperado: 1")
                    self.assertEqual(cuantos_ceros(1050051222), 0, "Esperado: 0")
                    self.assertEqual(cuantos_ceros(1010101010), 1, "Esperado: 1")
                    self.assertEqual(cuantos_ceros(5000), 3, "Esperado: 3")
                    self.assertEqual(cuantos_ceros(10000000000), 10, "Esperado: 10")
                    self.assertEqual(cuantos_ceros(555), 0, "Esperado: 0")
                    self.assertEqual(cuantos_ceros(1), 0, "Esperado: 0")
                    self.assertEqual(cuantos_ceros(0), 0, "Esperado: 0")


            myTests().main()


    .. tab:: Ejercicio 5

        ..  activecode:: q11_5
            :nocodelens:

            Desarrolle la función ``contar_2`` que recibe un entero ``n`` positivo mayor que 0. La función debe devolver la cantidad de veces que el dígito 2 aparece en el intervalo ``[0, n-1]``. |br| |br|
            Ejemplos: |br|
            ``contar_2(20)`` -> ``2`` |br|
            ``contar_2(5)`` -> ``1`` |br|
            ``contar_2(1)`` -> ``0`` |br|

            ~~~~
            def contar_2(n):



            ====
            from unittest.gui import TestCaseGui


            class myTests(TestCaseGui):
                def testOne(self):

                    self.assertEqual(contar_2(20), 2, "Esperado: 2")
                    self.assertEqual(contar_2(1), 0, "Esperado: 0")
                    self.assertEqual(contar_2(5), 1, "Esperado: 1")
                    self.assertEqual(contar_2(999), 300, "Esperado: 300")
                    self.assertEqual(contar_2(555), 216, "Esperado: 216")


            myTests().main()


    .. tab:: Ejercicio 6

        ..  activecode:: q11_6
            :nocodelens:

            Desarrolle la función ``inicio_potencia`` que recibe un entero ``n`` positivo mayor que 0. La función debe devolver la primera potencia de 2 que comienza con ``n``. |br| |br|
            Ejemplos: |br|
            ``inicio_potencia(65)`` -> ``16`` |br|
            *Explicación*: para ``n = 65`` la potencia ``2^16`` da como resultado ``65536`` que contiene a ``n`` al comienzo. |br| |br|
            ``inicio_potencia(4)`` -> ``2`` |br|
            *Explicación*: para ``n = 4`` la potencia ``2^2`` da como resultado ``4`` que contiene a ``n`` al comienzo. |br| |br|
            ``inicio_potencia(3)`` -> ``5`` |br|
            *Explicación*: para ``n = 3`` la potencia ``2^5`` da como resultado ``32`` que contiene a ``n`` al comienzo. |br|

            ~~~~
            def inicio_potencia(n):



            ====
            from unittest.gui import TestCaseGui


            class myTests(TestCaseGui):
                def testOne(self):

                    self.assertEqual(inicio_potencia(7), 46, "Esperado: 46")
                    self.assertEqual(inicio_potencia(3), 5, "Esperado: 5")
                    self.assertEqual(inicio_potencia(133), 316, "Esperado: 316")
                    self.assertEqual(inicio_potencia(1024), 10, "Esperado: 10")
                    self.assertEqual(inicio_potencia(123), 90, "Esperado: 90")
                    self.assertEqual(inicio_potencia(1), 0, "Esperado: 0")
                    self.assertEqual(inicio_potencia(10), 10, "Esperado: 10")
                    self.assertEqual(inicio_potencia(50), 102, "Esperado: 102")


            myTests().main()