domingo, 6 de abril de 2025

Thinkcspy 6.5 El Patron acumulador

 

 



En el ejemplo anterior, escribimos una función que calcula el cuadrado de un número. El algoritmo que usamos En la función era simple: multiplique el número por sí mismo. En esta sección volveremos a implementar la función cuadrada y usaremos un algoritmo diferente, uno que se basa en la adición. de multiplicación.

Si desea multiplicar dos números juntos, el enfoque más básico es pensar que se repite el proceso de agregando un número a sí mismo. El número de repeticiones es donde entra en juego el segundo número. Por ejemplo, si Quería multiplicar tres y cinco, podríamos pensar en ello como agregar tres a sí mismo cinco veces. Tres más tres son seis, más tres son nueve, más tres son 12, y finalmente más tres es 15. Generalizando esto, si queremos implementar La idea de cuadrar un número, llamarlo n , se agregaríamos a sí mismo n veces.

Haga esto a mano primero e intente aislar exactamente qué pasos tomas. Tu Encuentra que necesitas mantener un "total en funcionamiento" de la suma hasta ahora, ya sea en una pieza de papel, o en tu cabeza. Recordar cosas de un paso a otro es Precisamente por qué tenemos variables en un programa. Esto significa que necesitaremos alguna variable Para recordar el "total de ejecución". Debe inicializarse con un valor de cero. Luego, necesitamos actualizar el "total en ejecución" el número correcto de veces. Para cada repetición, queremos Para actualizar el total de ejecución agregando el número.

En palabras podríamos decirlo de esta manera. Para cuadrar el valor de n , repetiremos el proceso de actualización de un total de ejecución n veces. Para actualizar el total de ejecución, tomamos el valor anterior del "total en ejecución" y agregamos n . Esa suma se convierte en la nueva valor del "total de ejecución".

Aquí está el programa en Activecode. Tenga en cuenta que el encabezado de la definición de función es el mismo que antes. Todo lo que ha cambiado son los detalles de cómo se realiza el cuadrado. Este es un gran ejemplo de diseño de "caja negra". Podemos cambiar los detalles dentro de la caja y aún usar la función exactamente como lo hicimos antes. 

>>def square(x):
>>    runningtotal = 0
>>    for counter in range(x):
>>        runningtotal = runningtotal + x

>>    return runningtotal

>>toSquare = 10
>>squareResult = square(toSquare)
>>print("The result of", toSquare, "squared is", squareResult)

>>>

The result of 10 squared is 100

En el programa anterior, observe que la variable runningtotal comienza con un valor de 0. A continuación, la iteración se realiza x veces. Dentro del bucle for, se produce la actualización. runningtotal se reasigna un nuevo valor que es el valor anterior más el valor de x.

Este patrón de iterar la actualización de una variable es comúnmente referido como el patrón del acumulador . Nos referimos a la variable como acumulador . Este patrón aparecerá una y otra vez. Recuerda que la clave Hacer que funcione con éxito es asegurarse de inicializar la variable antes de comenzar la iteración. Una vez dentro de la iteración, se requiere que actualice el acumulador.

Nota

¿Qué pasaría si pusiéramos la tarea? runningTotal = 0 adentro el para la declaración? ¿No está seguro? Pruébelo y averigüe.

6.5.1. El patrón de acumulador general

initialize the accumulator variable
repeat:
    modify the accumulator variable

# when the loop terminates the accumulator has the correct value

Nota

Este espacio de trabajo se proporciona para su conveniencia. Puede usar esta ventana ActiveCode para probar cualquier cosa que desee. 

 

Comprueba tu comprensión

Considere el siguiente código:

def square(x):
    for counter in range(x):
        runningtotal = 0
        runningtotal = runningtotal + x
    return runningtotal

¿Qué sucede si pone la inicialización de RunningTotal (el línea runningtotal = 0) dentro del bucle for el primero instrucción en el bucle?





Elegir uno


 

6.5.2. Una variación en el patrón del acumulador

Original - 1 de 1

sábado, 5 de abril de 2025

Thinkcspy 6.3 Casos de prueba

 

6.3. Prueba unitaria

Un caso de prueba expresa los requisitos para un programa, de una manera que se puede verificar automáticamente. Específicamente, una prueba afirma algo sobre el estado del programa en un punto particular en su ejecución. Una prueba unitaria es una automática Procedimiento utilizado para validar que las unidades individuales de código funcionan correctamente. Una función es una forma de una unidad. Una colección de estas pruebas unitarias se llama suite de prueba .

Anteriormente hemos sugerido que es una buena idea escribir primero comentarios sobre lo que se supone que debe hacer su código, antes de escribir el código. Es una idea aún mejor escribir algunos casos de prueba antes de escribir un programa.

Hay varias razones por las que es un buen hábito escribir casos de prueba.

  • Antes de escribir código, tenemos en mente lo que debería hacer, pero esos pensamientos pueden ser un poco vagos. Escribir casos de prueba nos obliga a ser más concretos sobre lo que debería suceder.

  • A medida que escribimos el código, los casos de prueba pueden proporcionar comentarios automatizados. En realidad, ha sido el beneficiario de tales comentarios automatizados a través de casos de prueba a lo largo de este libro en algunas de las ventanas de Activecode y casi todos los ejercicios. Escribimos el código para esos casos de prueba, pero lo mantuvimos oculto, para no confundirlo y también evitar regalar las respuestas. Puede obtener algunos de los mismos beneficios al escribir sus propios casos de prueba.

  • En proyectos de software más grandes, el conjunto de casos de prueba se puede ejecutar cada vez que se realiza un cambio en la base del código. Pruebas unitarias verifique que los pequeños bits de código se implementen correctamente.

Una forma de implementar pruebas unitarias en Python es con assert.

  • Siguiendo la palabra afirmar que habrá una expresión de Python.

  • Si esa expresión se evalúa al booleano False, entonces el intérprete aumentará un error de tiempo de ejecución.

  • Si la expresión evalúa a True, entonces nada sucede y la ejecución pasa a la siguiente línea de código.

Eche un vistazo a la forma en que Afirmar se usa en el siguiente código. 

>>assert type(9//5) == int
>>assert type(9.0//5) == int 

>>>

Error

AssertionError: en la línea 2 

Descripción

Un error de afirmación ocurre cuando Python encuentra una declaración de afirmación. Python evalúa la expresión a la derecha de la palabra afirmar; Si esa expresión es verdadera, todo está bien y el programa continúa. Si la expresión es falsa, Python plantea un error y se detiene.

Para arreglar

Verifique la expresión a la derecha de afirmar. La expresión es falsa y deberá determinar por qué es así. Es posible que simplemente desee imprimir las partes individuales de la expresión para comprender por qué se está evaluando a False. 

Explicación:

En el código anterior, establecemos explícitamente algunos supuestos naturales sobre cómo la división truncada podría funcionar en Python. Resulta que el segundo asumio está mal: 9.0//5 produce 2.0, un valor de punto flotante!

El intérprete de Python no hace cumplir las restricciones sobre los tipos de datos de objetos que pueden estar vinculados a particular variables; Sin embargo, la comprobación de tipos podría alertarnos de que algo ha salido mal en la ejecución de nuestro programa. Si somos asumiendo eso x es una lista, pero en realidad es un entero, luego en algún momento más adelante en la ejecución del programa, Probablemente habrá un error. Podemos agregar assert declaraciones que harán que un error se marque antes que más tarde, lo que podría hacer que sea mucho más fácil depurar.

Comprueba tu comprensión

Cuando assert x==y se ejecuta e x e y tienen los mismos valores, ¿qué sucederá?





RESPUESTA: D

6.3.1. assert con for loops

¿Por qué alguna vez querrías escribir una línea de código que nunca pueda calcular nada útil para ti, pero a veces causa? ¿Un error de tiempo de ejecución? Por todas las razones que describimos anteriormente sobre el valor de las pruebas automatizadas. Quieres una prueba que Alertará que usted de que alguna condición que asumió que era cierto no es cierto. Es mucho mejor ser alertado para ese hecho de inmediato que tener algún resultado inesperado mucho más tarde en la ejecución de su programa, que tendrá Problemas para trazar al lugar donde tuvo un error en su código.

¿Por qué no assert imprime algo que dice que la prueba pasó? La razón es que no quieres desordenar Sube su ventana de salida con los resultados de las pruebas automatizadas que pasan. Solo quieres saber cuándo una de tus pruebas falla. En proyectos más grandes, se utilizan otros arneses de prueba en lugar de assert, como el pitón unittest módulo. Esos proporcionan algunas pruebas de resumen de salida que han pasado, así como las que fallaron. En este libro de texto, Simplemente usaremos simple assert declaraciones para pruebas automatizadas.

En el código a continuación, lst está vinculado a un objeto de lista. En pitón , no todos los elementos de una lista deben ser de la mismo tipo. Podemos verificar que todos tengan el mismo tipo y obtener un error si no lo son. Observe que con lst2, Una de las afirmaciones falla. 

>>lst = ['a', 'b', 'c']
>>first_type = type(lst[0])
>>for item in lst:
>>    assert type(item) == first_type

>>lst2 = ['a', 'b', 'c', 17]
>>first_type = type(lst2[0])
>>for item in lst2:
>>    assert type(item) == first_type
 

>>>

 

Error

AssertionError: en la línea 9 

Descripción

Un error de afirmación ocurre cuando Python encuentra una declaración de afirmación. Python evalúa la expresión a la derecha de la palabra afirmar; Si esa expresión es verdadera, todo está bien y el programa continúa. Si la expresión es falsa, Python plantea un error y se detiene.

Para arreglar

Verifique la expresión a la derecha de afirmar. La expresión es falsa y deberá determinar por qué es así. Es posible que simplemente desee imprimir las partes individuales de la expresión para comprender por qué se está evaluando a False. 

 

6.3.2. Pruebas de valor de retorno

Probar si una función devuelve el valor correcto es el caso de prueba más fácil de definir. Simplemente verifique si el El resultado de invocar la función en una entrada particular produce la salida particular que espera. Echar un vistazo a el siguiente código. 

>>def square(x):
>>#raise x to the second power
>>    return x*x
>>print('testing square function')
>>assert square(3) == 9
 

>>>

testing square function
Debido a que cada prueba verifica si una función funciona correctamente en entradas específicas, los casos de prueba nunca estarán completos: en Principio, una función podría funcionar correctamente en todas las entradas que se prueban en los casos de prueba, pero aún no funcionan correctamente en otras entradas. Ahí es donde entra el arte de definir los casos de prueba: intenta encontrar entradas específicas que son representativos de todos los tipos importantes de entradas que podrían pasar a la función.

Para el juego de Hangman, esta función 'en blanco' toma una palabra y algunas letras que se han adivinado, y devuelve una versión de la palabra con _ para todas las letras que no se han adivinado. ¿Cuál de las siguientes es la forma correcta de escribir? una prueba para verificar que 'debajo' se mantendrá en blanco como 'u_d__' ¿Cuándo el usuario ha adivinado las letras D y usted hasta ahora?




Elegir uno


 

Thinkcspy. 6.2 Funciones que devuelven valores

 

6.2. Funciones que devuelven valores

La mayoría de las funciones requieren argumentos, valores que controlan cómo la función hace su trabajo. Por ejemplo, si desea encontrar el valor absoluto de un número, tiene que indicar cuál es el número. Python tiene una función incorporada para la computación el valor absoluto:

En este ejemplo, los argumentos a la abs La función son 5 y -5.

Algunas funciones toman más de un argumento. Por ejemplo, el módulo matemático contiene una función llamada pow que toma dos argumentos, la base y el exponente.

Actividad: 6.2.2 Activecode (CH04_5)

Nota:

Por supuesto, ya hemos visto que elevar una base a un exponente se puede hacer con el operador **.

Otra función incorporada que toma más de un argumento es max.

max se puede enviar cualquier número de argumentos, separados por comas, y devolver el valor máximo enviado. Los argumentos pueden ser valores simples o Expresiones. En el último ejemplo, se devuelve 503, ya que es mayor que 33, 125 y 1. Tenga en cuenta que max También funciona en listas de valores.

Además, funciones como range, int, abs Todos los valores de retorno que se puede usar para construir expresiones más complejas.

Entonces, una diferencia importante entre estas funciones y una como drawSquare es que drawSquare no fue ejecutado porque queríamos que calculara un valor, por el contrario, escribimos drawSquare Porque queríamos que ejecutara una secuencia de pasos que causaron la tortuga para dibujar una forma específica.

Las funciones que devuelven los valores a veces se llaman funciones fructíferas . En muchos otros idiomas, una parte que no devuelve un valor se llama procedimiento , Pero nos quedaremos aquí con la forma de Python de llamarlo también una función, o si queremos Para estresarlo, una no fruitante función

Las funciones fructíferas aún permiten al usuario proporcionar información (argumentos). Sin embargo, ahora hay un adicional de Datos que se devuelven de la función.

../_images/blackboxfun.png

¿Cómo escribimos nuestra propia función fructífera? Comencemos por crear un muy simple función matemática que llamaremos square. La función cuadrada tomará un número Como parámetro y devuelve el resultado de cuadrar ese número. Aquí está el Diagrama de caja negra con el código Python siguiente.

../_images/squarefun.png

Actividad: 6.2.4 Activecode (CH04_Square)

La de retorno es seguida por una expresión que se evalúa. Es El resultado se devuelve a la persona que llama como la "fruta" de llamar a esta función. Porque la declaración de retorno puede contener cualquier expresión de pitón que podríamos tener evitó crear la variable temporal y y simplemente usado return x*x. Intente modificar la función cuadrada anterior para ver que esto funciona de la misma manera. Por otro lado, usando variables temporales como y En el programa anterior hace depuración más fácil. Estas variables temporales son ejemplos de variables locales , perseguidas más En la siguiente sección.

Observe algo importante aquí. El nombre de la variable que pasamos como un argumento - toSquare - no tiene nada que ver con el nombre del parámetro formal - x. Es como si x = toSquare se ejecuta cuando square se llama. No importa cómo se llamara el valor en la persona que llama. En square, su nombre es x. Puedes ver esto muy claramente en Codelens, donde las variables globales (variables definidas fuera de cualquier función) y las variables locales para el cuadrado La función está en cajas separadas.

A medida que avanza el ejemplo en Codelens, observe que la de devolución no solo causa el función para devolver un valor, pero también devuelve el flujo de control al lugar del programa donde se realizó la llamada de función. Esto es cierto en general:

Nota

La llamada a una función termina después de la ejecución de una declaración de devolución. Esto es bastante obvio si la declaración de retorno es la última declaración en la función, pero Veremos más tarde dónde tiene sentido tener una declaración de devolución incluso cuando otras declaraciones Sigue y las declaraciones adicionales no ejecutan.


1 Def cuadrado (x):
2     y = x * x
3 regresar y
4
5 tosquare = 10
6 SquarReResult = Square (Tosquare)
7 Imprimir ("El resultado de", Tosquare, "Squared Is", SquarReResult)
línea que acaba de ejecutar

siguiente linea a ejecutar

Salida de impresión (arrastre la esquina inferior derecha para cambiar el tamaño)
marcos
Objetos

Actividad: Codelens 6.2.5 (CH04_CLSQUARE)

Otra cosa importante a notar a medida que atraviesa este codelens La demostración es el movimiento de las flechas rojas y verdes. Codelens usa estas flechas para mostrarle dónde se está ejecutando actualmente. Recuerde que la flecha roja siempre apunta a la siguiente línea de código que se ejecutará. La flecha verde claro apunta a la línea Eso se ejecutó en el último paso.

Cuando comience a ejecutar esta demostración de Codelens, notará que solo hay una flecha roja y apunta a Línea 1. Esto se debe a que la línea 1 es la siguiente línea que se ejecutará y, dado que es la primera línea, no hay línea ejecutada previamente de código.

Cuando haga clic en el botón Forward, observe que la flecha roja se mueve a la línea 5, omitiendo las líneas 2 y 3 de la función (y La flecha verde claro ha aparecido en la línea 1). ¿Por qué es esto? La respuesta es que la definición de función no es la misma que la ejecución de la función. Líneas 2 y 3 no se ejecutará hasta que la función se llame en la línea 6. La línea 1 define la función y el nombre square se agrega al variables globales, pero eso es todo el def lo hace en ese punto. El cuerpo de la función se ejecutará más tarde. Continuar haciendo clic El botón de avance para ver cómo se mueve el flujo de control desde la llamada, regresa al cuerpo de la función, y finalmente regresa a la línea 7, después de que la función ha devuelto su valor y el valor se ha asignado a squareResult.

Finalmente, hay un aspecto más de los valores de retorno de la función que se debe tener en cuenta. Todas las funciones de Python devuelven el valor None A menos que haya una declaración de devolución explícita con un valor que no sea None. Considere el siguiente error común cometido al comenzar Python Programadores. A medida que atraviesa este ejemplo, preste mucha atención a la devolución Valor en la lista de variables locales. Luego mira lo que se imprime cuando el devoluciones de la función.


1 Def cuadrado (x):
2     y = x * x
3 Imprima (y) # mal! ¡Debería usar retorno en su lugar!
4
5 tosquare = 10
6 SquarReResult = Square (Tosquare)
7 Imprimir ("El resultado de", Tosquare, "Squared Is", SquarReResult)
línea que acaba de ejecutar

siguiente linea a ejecutar

Salida de impresión (arrastre la esquina inferior derecha para cambiar el tamaño)
marcos
Objetos

Actividad: Codelens 6.2.6 (CH04_CLSQUARE_BAD)

El problema con esta función es que a pesar de que imprime el valor del cuadrado, ese valor no se devolverá al lugar donde se hizo la llamada. Dado que la línea 6 usa el valor de retorno como el lado derecho de una declaración de asignación, la evaluación del la función será None. En este caso, squareResult se referirá a ese valor después de la declaración de asignación y, por lo tanto, el resultado impreso en la línea 7 es incorrecto. Por lo general, las funciones devolverán valores que la persona que llama puede imprimir o procesar de alguna otra manera.

Comprueba tu comprensión

¿Qué está mal con la siguiente definición de función:

def addEm(x, y, z):
    return x + y + z
    print('the answer is', x + y + z)




RESPUESTA: B.

Actividad: 6.2.7 Opción múltiple (test_Question5_2_1)

¿Qué volverá la siguiente función?

def addEm(x, y, z):
    print(x + y + z)



RESPUESTA: A

Actividad: 6.2.8 Opción múltiple (test_Question5_2_2)



domingo, 16 de marzo de 2025

Thinkcspy. 6.1 Funciones

 
Como introduccion al tema de funciones puedes ver este video (en ingles), de Thinkcspy

 

En Python, una función es una secuencia nombrada de declaraciones que pertenecen juntos. Su objetivo principal es ayudarnos Organizar programas en fragmentos que coincidan con la forma en que pensamos la solución al problema.

La sintaxis para una definición de función es:

def name( parameters ):
    statements

Puede inventar cualquier nombre que desee para las funciones que cree, excepto que No puede usar un nombre que sea una palabra clave de Python, y los nombres deben seguir las reglas para identificadores legales que se dieron anteriormente. Los parámetros especifican Qué información, si la hay, debe proporcionar para usar la nueva función. Otra forma de decir esto es que los parámetros especifican lo que la función necesita hacer su trabajo.

Puede haber cualquier cantidad de declaraciones dentro de la función, pero tienen que ser sangrado del def. En los ejemplos de este libro, usaremos el Allorización estándar de cuatro espacios. Las definiciones de funciones son la segunda de Varias declaraciones compuestas que veremos, todas las cuales tienen lo mismo patrón:

  1. Una línea de encabezado que comienza con una palabra clave y termina con un colon.

  2. Un cuerpo que consta de una o más declaraciones de Python, cada una sangría la misma cantidad - 4 espacios es el estándar de Python - de la línea de encabezado. 

    Ya hemos visto el for bucle que sigue este patrón.

    En una definición de función, la palabra clave en el encabezado es def, que es seguido por el nombre de la función y algunos parámetros encerrados en paréntesis. La lista de parámetros puede estar vacía, o puede contener cualquier número de Parámetros separados entre sí por comas. En cualquier caso, se requieren los paréntesis.

    Necesitamos decir un poco más sobre los parámetros. En la definición, la lista de parámetros se conoce más específicamente como el parámetros formales . Esta lista de nombres describe esas cosas que la función Necesita recibir del usuario de la función. Cuando usa una función, proporciona valores a los parámetros formales .

    La siguiente figura muestra esta relación. Una función necesita cierta información para hacer su trabajo. Estos valores, a menudo llamados argumentos o parámetros reales , se pasan a la función por el usuario. 

     ../_images/blackboxproc.png

    Este tipo de diagrama a menudo se llama diagrama de caja negra porque solo establece los requisitos desde la perspectiva del usuario. El usuario debe conocer el nombre de la función y qué argumentos deben aprobarse. Los detalles de cómo funciona la función se ocultan dentro de la "caja negra".

    Supongamos que estamos trabajando con tortugas y una operación común que necesitamos es dibujar cuadrícula. Tendría sentido si no tuviéramos que duplicar todos los pasos cada vez que queremos hacer un cuadrado. Se puede considerar "dibujar un cuadrado" como una abstracción de varios pasos más pequeños. Tendremos que proporcionar dos piezas de información para que la función haga su trabajo: una tortuga para hacer el dibujo y un tamaño para el costado del cuadrado. Podríamos representar esto usando el siguiente diagrama de caja negra.

    ../_images/turtleproc.png

    Aquí hay un programa que contiene una función para capturar esta idea. Probar. 

    >>import turtle

    >>def drawSquare(t, sz):
        """Make turtle t draw a square of with side sz."""

    >>    for i in range(4):
    >>        t.forward(sz)
    >>        t.left(90)


    >>wn = turtle.Screen()              # Set up the window and its attributes
    >>wn.bgcolor("lightgreen")

    >>alex = turtle.Turtle()            # create alex
    >>drawSquare(alex, 50)             # Call the function to draw the square passing the actual turtle and the actual side size

    >>wn.exitonclick()

    Esta función se nombra drawSquare. Tiene dos parámetros: uno para decir la función que tortuga moverse y la otra para decirle el tamaño de la plaza queremos dibujar. En la definición de función se llaman ty sz respectivamente. Asegúrese de saber dónde el cuerpo de la función termina: depende de la sangría y las líneas en blanco no cuentan para ¡Este propósito!

    cajas

    Si lo primero después del encabezado de la función es una cadena (algunas herramientas insisten en que Debe ser una cadena citada triple), se llama DOCSTRING y recibe un tratamiento especial en Python y en algunas de las herramientas de programación.

    Otra forma de recuperar esta información es usar el interactivo intérprete e ingresa la expresión <function_name>.__doc__, que recuperará el DOCSTRING para la función. Entonces, la cadena que escribe como documentación al comienzo de una función es recuperable por Python Tools en tiempo de ejecución . Esto es diferente de los comentarios en su código, que se eliminan por completo cuando se analiza el programa.

    Por convención, los programadores de Python usan documentos para la documentación clave de sus funciones.

    Definir una nueva función no hace que la función se ejecute. Para hacer eso necesitamos un llamada de función . Esto también se conoce como una función de invocación . Ya hemos visto cómo llamar a algunas funciones incorporadas como print, rangey int. Las llamadas de la función contienen el nombre de la función que se ejecutado seguido de una lista de valores entre paréntesis, llamados argumentos , que se asignan a los parámetros en la definición de función. Entonces en el segundo a la última línea de el programa, llamamos a la función y pasamos alex como la tortuga a ser manipulada, y 50 como el tamaño del cuadrado que queremos.

    Una vez que hemos definido una función, podemos llamarla tan a menudo como nos gustamos y es Las declaraciones se ejecutarán cada vez que lo llamemos. En este caso, podríamos usarlo para obtener Una de nuestras tortugas para dibujar un cuadrado y luego podemos mover la tortuga y hacer que dibuje un cuadrado diferente en un Diferente ubicación. Tenga en cuenta que levantamos la cola para que cuando alex Movimientos No hay rastro. Ponemos la cola Vuelva a bajar antes de dibujar el siguiente cuadrado. Asegúrese de poder identificar ambas invocaciones del drawSquare función.

    Comprueba tu comprensión

    ¿Qué es una función en Python?






    Actividad: 6.1.6 Opción múltiple (test_Question5_1_1)

    ¿Cuál es un propósito principal de una función?






    Actividad: 6.1.7 Opción múltiple (test_Question5_1_2)

    ¿Cuál de los siguientes es un encabezado de función válido (primera línea de una definición de función)?






    Actividad: 6.1.8 Opción múltiple (test_Question5_1_3)

    ¿Cuál es el nombre de la siguiente función?

    def drawSquare(t, sz):
        """Make turtle t draw a square of with side sz."""
        for i in range(4):
            t.forward(sz)
            t.left(90)
    





    Actividad: 6.1.9 Opción múltiple (test_Question5_1_4)

    ¿Cuáles son los parámetros de la siguiente función?

    def drawSquare(t, sz):
        """Make turtle t draw a square of with side sz."""
        for i in range(4):
            t.forward(sz)
            t.left(90)
    





    Actividad: 6.1.10 Opción múltiple (test_Question5_1_5)

    Teniendo en cuenta la función a continuación, ¿cuál de las siguientes afirmaciones invoca correctamente o llama, esta función (es decir, hace que se ejecute)? Suponga que ya tenemos una tortuga llamada Alex.

    def drawSquare(t, sz):
        """Make turtle t draw a square of with side sz."""
        for i in range(4):
            t.forward(sz)
            t.left(90)
    






    Actividad: 6.1.11 Opción múltiple (test_Question5_1_6)

    Verdadero o falso: se puede llamar a una función varias veces colocando una llamada de función en el cuerpo de un bucle.




    Actividad: 6.1.12 Opción múltiple (test_Question5_1_7)



     



Entradas recientes

Thinkcspy 6.5 El Patron acumulador

    En el ejemplo anterior, escribimos una función que calcula el cuadrado de un número. El algoritmo que usamos En la función era simple: m...

Entradas Populares