Funciones - Soluciones (1)

Se ofrecen a continuación unas posibles soluciones de los ejercicios (1) de funciones.

Funciones (1) - 1

Funciones 1 - (01)

def subrutina():
    global a
    print(a)
    a += 10
    return

a = 33
subrutina()
print(a)
33
43

El programa que se muestra arriba a la izquierda escribirá el resultado que se muestra arriba a la derecha.

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.

Siguiente

Funciones 1 - (01) - Paso 1

def subrutina():
    global a
    print(a)
    a += 10
    return

a = 33
subrutina()
print(a)

En la primera instrucción se crea la variable "a", con el valor 33.

Anterior Siguiente

Funciones 1 - (01) - Paso 2

def subrutina():
    global a
    print(a)
    a += 10
    return

a = 33
subrutina()
print(a)

A continuación se realiza la llamada a la función subrutina().

Anterior Siguiente

Funciones 1 - (01) - Paso 3

def subrutina():
    global a
    print(a)
    a += 10
    return

a = 33
subrutina()
print(a)

Se ejecuta la primera instrucción de la función subrutina(), que declara global la variable "a", es decir, que la variable "a" del programa principal y la variable "a" de la función subrutina() son la misma variable.

Anterior Siguiente

Funciones 1 - (01) - Paso 4

def subrutina():
    global a
    print(a)
    a += 10
    return

a = 33
subrutina()
print(a)
33

Se escribe el valor de la variable "a". Como la variable "a" de la función subrutina() es la misma que la variable "a" del programa principal, se escribe el valor 33.

Anterior Siguiente

Funciones 1 - (01) - Paso 5

def subrutina():
    global a
    print(a)
    a += 10
    return

a = 33
subrutina()
print(a)
33

A continuación, se aumenta el valor de la variable "a" en 10 unidades, pasando a valer 43 (33 + 10).

Anterior Siguiente

Funciones 1 - (01) - Paso 6

def subrutina():
    global a
    print(a)
    a += 10
    return

a = 33
subrutina()
print(a)
33

La instrucción return indica el final de la función subrutina() y continúa la ejecución del programa tras la llamada a la función subrutina().

Anterior Siguiente

Funciones 1 - (01) - Paso 7

def subrutina():
    global a
    print(a)
    a += 10
    return

a = 33
subrutina()
print(a)
33
43

Al terminar la función subrutina(), se vuelve al programa principal. Se escribe el valor de la variable "a" que es ahora 43, puesto que la función subrutina() ha modificado su valor.

Se ejecuta la última instrucción del programa y el programa termina.

Anterior

Funciones (1) - 2

Funciones 1 - (02)

def subrutina():
    global a
    print(a)
    a = 21
    return

subrutina()
a = 20
print(a)
Traceback (most recent call last):
  File "ejercicio.py", line 7, in <module>
    subrutina()
  File "ejercicio.py", line 3, in subrutina
    print(a)
NameError: global name 'a' is not defined

El programa que se muestra arriba a la izquierda escribirá el resultado que se muestra arriba a la derecha.

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.

Siguiente

Funciones 1 - (02) - Paso 1

def subrutina():
    global a
    print(a)
    a = 21
    return

subrutina()
a = 20
print(a)

En la primera instrucción se realiza la llamada a la función subrutina().

Anterior Siguiente

Funciones 1 - (02) - Paso 2

def subrutina():
    global a
    print(a)
    a = 21
    return

subrutina()
a = 20
print(a)
Traceback (most recent call last):
  File "ejercicio.py", line 7, in <module>
    subrutina()
  File "ejercicio.py", line 3, in subrutina
    print(a)
NameError: global name 'a' is not defined

Se ejecuta la primera instrucción de la función subrutina(), que declara global la variable "a", es decir, que la variable "a" del programa principal y la variable "a" de la función subrutina() son la misma variable.

Pero como en el programa principal todavía no se ha definido la variable "a", se produce un error y el programa termina. Nótese que el error se produce aunque en el programa principal se defina la variable "a" más adelante. Lo importante es que cuando se llama a la función subrutina()la variable no está todavía definida.

Anterior

Funciones (1) - 3

Funciones 1 - (03)

def subrutina():
    global a
    a = 10
    print(a)
    return

a = 33
subrutina()
print(a)
10
10

El programa que se muestra arriba a la izquierda escribirá el resultado que se muestra arriba a la derecha.

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.

Siguiente

Funciones 1 - (03) - Paso 1

def subrutina():
    global a
    a = 10
    print(a)
    return

a = 33
subrutina()
print(a)

En la primera instrucción se crea la variable "a", con el valor 33.

Anterior Siguiente

Funciones 1 - (03) - Paso 2

def subrutina():
    global a
    a = 10
    print(a)
    return

a = 33
subrutina()
print(a)

A continuación se realiza la llamada a la función subrutina().

Anterior Siguiente

Funciones 1 - (03) - Paso 3

def subrutina():
    global a
    a = 10
    print(a)
    return

a = 33
subrutina()
print(a)

Se ejecuta la primera instrucción de la función subrutina(), que declara global la variable "a", es decir, que la variable "a" del programa principal y la variable "a" de la función subrutina() son la misma variable.

Anterior Siguiente

Funciones 1 - (03) - Paso 4

def subrutina():
    global a
    a = 10
    print(a)
    return

a = 33
subrutina()
print(a)

A continuación, se establece el valor de la variable "a" igual a 10.

Anterior Siguiente

Funciones 1 - (03) - Paso 5

def subrutina():
    global a
    a = 10
    print(a)
    return

a = 33
subrutina()
print(a)
10

A continuación, se escribe el valor de la variable "a". Como la variable "a" de la función subrutina() es la misma que la variable "a" del programa principal, se escribe el valor 33.

Anterior Siguiente

Funciones 1 - (03) - Paso 6

def subrutina():
    global a
    print(a)
    a += 10
    return

a = 33
subrutina()
print(a)
10

La instrucción return indica el final de la función subrutina() y continúa la ejecución del programa tras la llamada a la función subrutina().

Anterior Siguiente

Funciones 1 - (03) - Paso 7

def subrutina():
    global a
    print(a)
    a += 10
    return

a = 33
subrutina()
print(a)
10
10

Al terminar la función subrutina(), se vuelve al programa principal. Se escribe el valor de la variable "a" que es ahora 10, puesto que la función subrutina() ha modificado su valor.

Se ejecuta la última instrucción del programa y el programa termina.

Anterior

Funciones (1) - 4

Funciones 1 - (04)

def subrutina():
    nonlocal a
    print(a)
    a = 32
    return

a = 31
subrutina()
print(a)
IDLE. Aviso de error de sintaxis

El programa que se muestra arriba a la izquierda escribirá el resultado que se muestra arriba a la derecha.

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.

Siguiente

Funciones 1 - (04) - Paso 1

def subrutina():
    nonlocal a
    print(a)
    a = 32
    return

a = 31
subrutina()
print(a)
IDLE. Aviso de error de sintaxis

Realmente este program no llega ni siquiera a ejecutarse.

Al analizar la corrección sintáctica del programa, Python descubre que en la función subrutina() se declara una variable como nonlocal, que significa que la variable está definida en un ámbito superior (que no es el programa principal, porque si no debería declararse como global). Pero como no existe ningún ámbito intermedio entre la función subrutina() y el programa principal, esa variable no puede estar definida en ningún sitio, por lo que se genera un error.

Anterior

Funciones (1) - 5

Funciones 1 - (05)

def subrutina():
    print(a)
    a = 11
    return

a = 10
subrutina()
print(a)
Traceback (most recent call last):
  File "ejercicio.py", line 7, in <module>
    subrutina()
  File "ejercicio.py", line 2, in subrutina
    print(a)
UnboundLocalError: local variable 'a' referenced before assignment

El programa que se muestra arriba a la izquierda escribirá el resultado que se muestra arriba a la derecha.

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.

Siguiente

Funciones 1 - (05) - Paso 1

def subrutina():
    print(a)
    a = 11
    return

a = 10
subrutina()
print(a)

En la primera instrucción se crea la variable "a", con el valor 10.

Anterior Siguiente

Funciones 1 - (05) - Paso 2

def subrutina():
    print(a)
    a = 11
    return

a = 10
subrutina()
print(a)

A continuación, se realiza la llamada a la función subrutina().

Anterior Siguiente

Funciones 1 - (05) - Paso 3

def subrutina():
    print(a)
    a = 11
    return

a = 10
subrutina()
print(a)
Traceback (most recent call last):
  File "ejercicio.py", line 7, in <module>
    subrutina()
  File "ejercicio.py", line 2, in subrutina
    print(a)
UnboundLocalError: local variable 'a' referenced before assignment

Se ejecuta la primera instrucción de la función subrutina(), que pretende imprimir la variable "a".

Como dentro de la función subrutina() se define la variable "a", Python la considera local, es decir, distinta de la variable "a" del programa principal. Pero como en esta instrucción se intenta imprimir el valor de la variable sin haberle dado valor antes, se produce un error y el programa se interrumpe.

Anterior

Funciones (1) - 6

Funciones 1 - (06)

def subrutina():
    a = b
    print(a)
    return

a = 4
b = 3
subrutina()
print(a)
3
4

El programa que se muestra arriba a la izquierda escribirá el resultado que se muestra arriba a la derecha.

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.

Siguiente

Funciones 1 - (06) - Paso 1

def subrutina():
    a = b
    print(a)
    return

a = 4
b = 3
subrutina()
print(a)

En la primera instrucción se crea la variable "a", con el valor 4.

Anterior Siguiente

Funciones 1 - (06) - Paso 2

def subrutina():
    a = b
    print(a)
    return

a = 4
b = 3
subrutina()
print(a)

A continuación se crea la variable "b", con el valor 3.

Anterior Siguiente

Funciones 1 - (06) - Paso 3

def subrutina():
    a = b
    print(a)
    return

a = 4
b = 3
subrutina()
print(a)

A continuación se realiza la llamada a la función subrutina().

Anterior Siguiente

Funciones 1 - (06) - Paso 4

def subrutina():
    a = b
    print(a)
    return

a = 4
b = 3
subrutina()
print(a)

La primera instrucción de la función subrutina() iguala "b" a "a".

  • Al asignarle valor a la variable "a", la variable "a" es una variable local, es decir, distinta a la variable "a" del programa principal
  • Al utilizar el valor de la variable "b" sin haberla definido antes, Python entiende que la variable "b" es libre, en este caso, global, puesto que "b" está definida en el programa principal.

Por tanto, la variable "a" local toma el valor de la variable global "b", es decir, 3.

Anterior Siguiente

Funciones 1 - (06) - Paso 5

def subrutina():
    a = b
    print(a)
    return

a = 4
b = 3
subrutina()
print(a)
3

A continuación, se escribe el valor de "a", es decir, 3.

Anterior Siguiente

Funciones 1 - (06) - Paso 6

def subrutina():
    a = b
    print(a)
    return

a = 4
b = 3
subrutina()
print(a)
3

La instrucción return indica el final de la función subrutina() y continúa la ejecución del programa tras la llamada a la función subrutina()

Anterior Siguiente

Funciones 1 - (06) - Paso 7

def subrutina():
    a = b
    print(a)
    return

a = 4
b = 3
subrutina()
print(a)
3
4

Al terminar la función subrutina(), se vuelve al programa principal. Se escribe el valor de la variable "a" que es ahora 4, puesto que se trata de la variable "a" del programa principal, que no ha modificado su valor.

Se ejecuta la última instrucción del programa y el programa termina.

Anterior

Funciones (1) - 7

Funciones 1 - (07)

def subrutina_1():
    a = 20
    print(a)
    return

def subrutina_2():
    global a
    a = 30
    print(a)
    return

a = 10
subrutina_1()
print(a)
subrutina_2()
print(a)
20
10
30
30

El programa que se muestra arriba a la izquierda escribirá el resultado que se muestra arriba a la derecha.

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.

Siguiente

Funciones 1 - (07) - Paso 1

def subrutina_1():
    a = 20
    print(a)
    return

def subrutina_2():
    global a
    a = 30
    print(a)
    return

a = 10
subrutina_1()
print(a)
subrutina_2()
print(a)

En la primera instrucción se crea la variable "a", con el valor 10.

Anterior Siguiente

Funciones 1 - (07) - Paso 2

def subrutina_1():
    a = 20
    print(a)
    return

def subrutina_2():
    global a
    a = 30
    print(a)
    return

a = 10
subrutina_1()
print(a)
subrutina_2()
print(a)

A continuación se realiza la llamada a la función subrutina_1()

Anterior Siguiente

Funciones 1 - (07) - Paso 3

def subrutina_1():
    a = 20
    print(a)
    return

def subrutina_2():
    global a
    a = 30
    print(a)
    return

a = 10
subrutina_1()
print(a)
subrutina_2()
print(a)

Se ejecuta la primera instrucción de la función subrutina_1() , que establece el valor de la variable "a". Al establecer valor sin haberla declarado antes global o nonlocal, Python considera esta variable como local. Por tanto, la variable "a" de la función subrutina_1() es distinta de la variable "a" del programa principal.

Anterior Siguiente

Funciones 1 - (07) - Paso 4

def subrutina_1():
    a = 20
    print(a)
    return

def subrutina_2():
    global a
    a = 30
    print(a)
    return

a = 10
subrutina_1()
print(a)
subrutina_2()
print(a)
20

Se escribe el valor de la variable "a", es decir, 33.

Anterior Siguiente

Funciones 1 - (07) - Paso 5

def subrutina_1():
    a = 20
    print(a)
    return

def subrutina_2():
    global a
    a = 30
    print(a)
    return

a = 10
subrutina_1()
print(a)
subrutina_2()
print(a)
20

La instrucción return indica el final de la función subrutina_1() y continúa la ejecución del programa tras la llamada a la función subrutina_1()

Anterior Siguiente

Funciones 1 - (07) - Paso 6

def subrutina_1():
    a = 20
    print(a)
    return

def subrutina_2():
    global a
    a = 30
    print(a)
    return

a = 10
subrutina_1()
print(a)
subrutina_2()
print(a)
20
10

Al terminar la función subrutina_1() , se vuelve al programa principal. Se escribe el valor de la variable "a", es decir 10, puesto que se trata de la variable "a" del programa principal.

Anterior Siguiente

Funciones 1 - (07) - Paso 7

def subrutina_1():
    a = 20
    print(a)
    return

def subrutina_2():
    global a
    a = 30
    print(a)
    return

a = 10
subrutina_1()
print(a)
subrutina_2()
print(a)
20
10

A continuación se realiza la llamada a la función subrutina_2() .

Anterior Siguiente

Funciones 1 - (07) - Paso 8

def subrutina_1():
    a = 20
    print(a)
    return

def subrutina_2():
    global a
    a = 30
    print(a)
    return

a = 10
subrutina_1()
print(a)
subrutina_2()
print(a)
20
10

Se ejecuta la primera instrucción de la función subrutina_2() , que declara la variable "a" como variable global. Por tanto, la variable "a" de la función subrutina_2() es la misma que la variable "a" del programa principal.

Anterior Siguiente

Funciones 1 - (07) - Paso 9

def subrutina_1():
    a = 20
    print(a)
    return

def subrutina_2():
    global a
    a = 30
    print(a)
    return

a = 10
subrutina_1()
print(a)
subrutina_2()
print(a)
20
10

A continuación, se establece el valor de la variable "a" en 30.

Anterior Siguiente

Funciones 1 - (07) - Paso 10

def subrutina_1():
    a = 20
    print(a)
    return

def subrutina_2():
    global a
    a = 30
    print(a)
    return

a = 10
subrutina_1()
print(a)
subrutina_2()
print(a)
20
10
30

Se escribe el valor de la variable "a", es decir, 30.

Anterior Siguiente

Funciones 1 - (07) - Paso 11

def subrutina_1():
    a = 20
    print(a)
    return

def subrutina_2():
    global a
    a = 30
    print(a)
    return

a = 10
subrutina_1()
print(a)
subrutina_2()
print(a)
20
10
30

La instrucción return indica el final de la función y continúa la ejecución del programa tras la llamada a la función subrutina_2().

Anterior Siguiente

Funciones 1 - (07) - Paso 12

def subrutina_1():
    a = 20
    print(a)
    return

def subrutina_2():
    global a
    a = 30
    print(a)
    return

a = 10
subrutina_1()
print(a)
subrutina_2()
print(a)
20
10
30
30

Al terminar la función, se vuelve al programa principal. Se escribe el valor de la variable "a" que es ahora 30, puesto que la función ha modificado su valor.

Se ejecuta la última instrucción del programa y el programa termina.

Anterior

Funciones (1) - 8

Funciones 1 - (08)

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5
4
3

El programa que se muestra arriba a la izquierda escribirá el resultado que se muestra arriba a la derecha.

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.

Siguiente

Funciones 1 - (08) - Paso 1

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

En la primera instrucción se crea la variable "a", con el valor 3.

Anterior Siguiente

Funciones 1 - (08) - Paso 2

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

A continuación se realiza la llamada a la función subrutina().

Anterior Siguiente

Funciones 1 - (08) - Paso 3

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

Se ejecuta la primera instrucción de la función, que establece el valor de la variable "a". Al establecer valor sin haberla declarado antes global o nonlocal, Python considera esta variable como local. Por tanto, la variable "a" de la función es distinta de la variable "a" del programa principal.

Anterior Siguiente

Funciones 1 - (08) - Paso 4

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

La función subrutina() contiene a su vez una función llamada sub_subrutina(). A continuación se realiza la llamada a la función sub_subrutina() desde la función subrutina().

Anterior Siguiente

Funciones 1 - (08) - Paso 5

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

Se ejecuta la primera instrucción de la función, que establece el valor de la variable "a". Al establecer valor sin haberla declarado antes global o nonlocal, Python considera esta variable como local. Por tanto, la variable "a" de la función es distinta de la variable "a" de la función subrutina() o de la variable "a" del programa principal.

Anterior Siguiente

Funciones 1 - (08) - Paso 6

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5

Se escribe el valor de la variable "a", es decir, 5.

Anterior Siguiente

Funciones 1 - (08) - Paso 7

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5

La instrucción return indica el final de la función y continúa la ejecución del programa tras la llamada a la función sub_subrutina().

En este caso, eso significa volver a la función subrutina().

Anterior Siguiente

Funciones 1 - (08) - Paso 8

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5
4

Al terminar la función sub_subrutina(), se vuelve a la función subrutina(). Se escribe el valor de la variable "a" que es 4, puesto que se trata de la variable "a" de la función subrutina(), que no ha modificado su valor.

Anterior Siguiente

Funciones 1 - (08) - Paso 9

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5
4

La instrucción return indica el final de la función subrutina() y continúa la ejecución del programa tras la llamada a la función subrutina().

En este caso, eso significa volver al programa principal.

Anterior Siguiente

Funciones 1 - (08) - Paso 10

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5
4
3

Al terminar la función, se vuelve al programa principal. Se escribe el valor de la variable "a" que es 3, puesto que se trata de la variable "a" del programa principal, que no ha modificado su valor.

Se ejecuta la última instrucción del programa y el programa termina.

Anterior

Funciones (1) - 9

Funciones 1 - (09)

def subrutina():
    def sub_subrutina():
        a = 3
        print(a)
        a = 5
        return

    a = 3
    sub_subrutina()
    print(a)
    return

a = 4
sub_subrutina()
print(a)
Traceback (most recent call last):
  File "ejercicio.py", line 14, in <module>
    sub_subrutina()
NameError: name 'sub_subrutina' is not defined

El programa que se muestra arriba a la izquierda escribirá el resultado que se muestra arriba a la derecha.

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.

Siguiente

Funciones 1 - (09) - Paso 1

def subrutina():
    def sub_subrutina():
        a = 3
        print(a)
        a = 5
        return

    a = 3
    sub_subrutina()
    print(a)
    return

a = 4
sub_subrutina()
print(a)

En la primera instrucción se crea la variable "a", con el valor 4.

Anterior Siguiente

Funciones 1 - (09) - Paso 2

def subrutina():
    def sub_subrutina():
        a = 3
        print(a)
        a = 5
        return

    a = 3
    sub_subrutina()
    print(a)
    return

a = 4
sub_subrutina()
print(a)
Traceback (most recent call last):
  File "ejercicio.py", line 14, in <module>
    sub_subrutina()
NameError: name 'sub_subrutina' is not defined

A continuación se realiza la llamada a la función sub_subrutina().

El problema es que la función sub_subrutina() no está definida en el programa principal, sino en el interior de la función subrutina(), por lo que la función no es accesible desde el programa principal. Al llamar a una función que no está definida en el programa principal, se produce un error.

Anterior

Funciones (1) - 10

Funciones 1 - (10)

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5
4
4

El programa que se muestra arriba a la izquierda escribirá el resultado que se muestra arriba a la derecha.

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.

Siguiente

Funciones 1 - (10) - Paso 1

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

En la primera instrucción se crea la variable "a", con el valor 3.

Anterior Siguiente

Funciones 1 - (10) - Paso 2

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

A continuación se realiza la llamada a la función subrutina().

Anterior Siguiente

Funciones 1 - (10) - Paso 3

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

Se ejecuta la primera instrucción de la función subrutina(), que declara global la variable "a", es decir, que la variable "a" del programa principal y la variable "a" de la función subrutina() son la misma variable.

Anterior Siguiente

Funciones 1 - (10) - Paso 4

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

Se establece el valor de la variable "a" en 4.

Anterior Siguiente

Funciones 1 - (10) - Paso 5

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

La función subrutina() contiene a su vez una función llamada sub_subrutina(). A continuación se realiza la llamada a la función sub_subrutina() desde la función subrutina().

Anterior Siguiente

Funciones 1 - (10) - Paso 6

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

Se ejecuta la primera instrucción de la función sub_subrutina(), que establece el valor de la variable "a". Al establecer valor sin haberla declarado antes global o nonlocal, Python considera esta variable como local. Por tanto, la variable "a" de la función sub_subrutina() es distinta de la variable "a" del programa principal (que es la misma que la variable "a" de la función subrutina()).

Se establece el valor de la variable "a" de la función subrutina() en 5.

Anterior Siguiente

Funciones 1 - (10) - Paso 7

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5

Se escribe el valor de la variable "a", es decir, 5.

Anterior Siguiente

Funciones 1 - (10) - Paso 8

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5

La instrucción return indica el final de la función sub_subrutina() y continúa la ejecución del programa tras la llamada a la función sub_subrutina().

En este caso, eso significa volver a la función subrutina().

Anterior Siguiente

Funciones 1 - (10) - Paso 9

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5
4

Al terminar la función sub_subrutina(), se vuelve a la función subrutina(). Se escribe el valor de la variable "a" que es 4, puesto que se trata de la variable "a" de la función subrutina(), que no ha modificado su valor.

Anterior Siguiente

Funciones 1 - (10) - Paso 10

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5
4

La instrucción return indica el final de la función subrutina() y continúa la ejecución del programa tras la llamada a la función subrutina().

En este caso, eso significa volver al programa principal.

Anterior Siguiente

Funciones 1 - (10) - Paso 11

def subrutina():
    def sub_subrutina():
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5
4
4

Al terminar la función subrutina(), se vuelve al programa principal. Se escribe el valor de la variable "a" que es 4, puesto que se trata de la variable "a" del programa principal, que se ha modificado en la función subrutina().

Se ejecuta la última instrucción del programa y el programa termina.

Anterior

Funciones (1) - 11

Funciones 1 - (11)

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5
5
5

El programa que se muestra arriba a la izquierda escribirá el resultado que se muestra arriba a la derecha.

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.

Siguiente

Funciones 1 - (11) - Paso 1

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

En la primera instrucción se crea la variable "a", con el valor 3.

Anterior Siguiente

Funciones 1 - (11) - Paso 2

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

A continuación se realiza la llamada a la función subrutina().

Anterior Siguiente

Funciones 1 - (11) - Paso 3

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

Se ejecuta la primera instrucción de la función subrutina(), que declara global la variable "a", es decir, que la variable "a" del programa principal y la variable "a" de la función subrutina() son la misma variable.

Anterior Siguiente

Funciones 1 - (11) - Paso 4

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

Se establece el valor de la variable "a" en 4.

Anterior Siguiente

Funciones 1 - (11) - Paso 5

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

La función subrutina() contiene a su vez una función llamada sub_subrutina(). A continuación se realiza la llamada a la función sub_subrutina() desde la función subrutina().

Anterior Siguiente

Funciones 1 - (11) - Paso 6

def subrutina():
    def sub_subrutina():
        global a 
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

Se ejecuta la primera instrucción de la función sub_subrutina(), que declara global la variable "a", es decir, que la variable "a" del programa principal y la variable "a" de la función sub_subrutina() son la misma variable.

Anterior Siguiente

Funciones 1 - (11) - Paso 7

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

A continuación se establece el valor de la variable "a" en 5.

Anterior Siguiente

Funciones 1 - (11) - Paso 8

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5

Se escribe el valor de la variable "a", es decir, 5.

Anterior Siguiente

Funciones 1 - (11) - Paso 9

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5

La instrucción return indica el final de la función sub_subrutina() y continúa la ejecución del programa tras la llamada a la función sub_subrutina().

En este caso, eso significa volver a la función subrutina().

Anterior Siguiente

Funciones 1 - (11) - Paso 10

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5
5

Al terminar la función sub_subrutina(), se vuelve a la función subrutina(). Se escribe el valor de la variable "a" que es 5, puesto que es la misma que la variable "a" de la función sub_subrutina() (y la del programa principal).

Anterior Siguiente

Funciones 1 - (11) - Paso 11

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5
5

La instrucción return indica el final de la función subrutina() y continúa la ejecución del programa tras la llamada a la función subrutina().

En este caso, eso significa volver al programa principal.

Anterior Siguiente

Funciones 1 - (11) - Paso 12

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5
5
5

Al terminar la función subrutina(), se vuelve al programa principal. Se escribe el valor de la variable "a" que es 5, puesto que se trata de la variable "a" del programa principal, que es la misma de las funciones subrutina() y sub_subrutina().

Se ejecuta la última instrucción del programa y el programa termina.

Anterior

Funciones (1) - 12

Funciones 1 - (12)

def subrutina():
    def sub_subrutina():
        a += 3
        print(a)
        return

    a += 3
    sub_subrutina()
    print(a)
    return

a = 4
subrutina()
print(a)
Traceback (most recent call last):
  File "ejercicio.py", line 13, in <module>
    subrutina()
  File "ejercicio.py", line 7, in subrutina
    a += 3
UnboundLocalError: local variable 'a' referenced before assignment

El programa que se muestra arriba a la izquierda escribirá el resultado que se muestra arriba a la derecha.

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.

Siguiente

Funciones 1 - (12) - Paso 1

def subrutina():
    def sub_subrutina():
        a += 3
        print(a)
        return

    a += 3
    sub_subrutina()
    print(a)
    return

a = 4
subrutina()
print(a)

En la primera instrucción se crea la variable "a", con el valor 4.

Anterior Siguiente

Funciones 1 - (12) - Paso 2

def subrutina():
    def sub_subrutina():
        a += 3
        print(a)
        return

    a += 3
    sub_subrutina()
    print(a)
    return

a = 4
subrutina()
print(a)

A continuación, se realiza la llamada a la función subrutina().

Anterior Siguiente

Funciones 1 - (12) - Paso 3

def subrutina():
    def sub_subrutina():
        a += 3
        print(a)
        return

    a += 3
    sub_subrutina()
    print(a)
    return

a = 4
subrutina()
print(a)
Traceback (most recent call last):
  File "ejercicio.py", line 13, in <module>
    subrutina()
  File "ejercicio.py", line 7, in subrutina
    a += 3
UnboundLocalError: local variable 'a' referenced before assignment

Se ejecuta la primera instrucción de la función subrutina(), que pretende modificar la variable "a".

La instrucción "a += 3" es equivalente a la instrucción "a = a + 3". Como esa instrucción asigna un valor a la variable "a", Python la considera local, es decir, distinta de la variable "a" del programa principal. Pero como el operador += necesita el valor de la variable "a" (para añadirle 3 unidades) y no se le ha dado valor antes en la función subrutina(), se produce un error y el programa se interrumpe.

Anterior

Funciones (1) - 13

Funciones 1 - (13)

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5
4
5

El programa que se muestra arriba a la izquierda escribirá el resultado que se muestra arriba a la derecha.

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.

Siguiente

Funciones 1 - (13) - Paso 1

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    global a
    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

En la primera instrucción se crea la variable "a", con el valor 3.

Anterior Siguiente

Funciones 1 - (13) - Paso 2

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

A continuación se realiza la llamada a la función subrutina().

Anterior Siguiente

Funciones 1 - (13) - Paso 3

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

Se ejecuta la primera instrucción de la función subrutina(), que establece el valor de la variable "a". Al establecer valor sin haberla declarado antes global o nonlocal, Python considera esta variable como local. Por tanto, la variable "a" de la función subrutina() es distinta de la variable "a" del programa principal.

Se establece el valor de la variable "a" de la función subrutina() en 4.

Anterior Siguiente

Funciones 1 - (13) - Paso 4

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

La función subrutina() contiene a su vez una función llamada sub_subrutina(). A continuación se realiza la llamada a la función sub_subrutina() desde la función subrutina().

Anterior Siguiente

Funciones 1 - (13) - Paso 5

def subrutina():
    def sub_subrutina():
        global a 
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

Se ejecuta la primera instrucción de la función sub_subrutina(), que declara global la variable "a", es decir, que la variable "a" del programa principal y la variable "a" de la función sub_subrutina() son la misma variable.

Anterior Siguiente

Funciones 1 - (13) - Paso 6

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)

A continuación se establece el valor de la variable "a" de la función sub_subrutina() (que es la misma que la variable "a" del programa principal) en 5.

Anterior Siguiente

Funciones 1 - (13) - Paso 7

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5

Se escribe el valor de la variable "a", es decir, 5.

Anterior Siguiente

Funciones 1 - (13) - Paso 8

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5

La instrucción return indica el final de la función sub_subrutina() y continúa la ejecución del programa tras la llamada a la función sub_subrutina().

En este caso, eso significa volver a la función subrutina().

Anterior Siguiente

Funciones 1 - (13) - Paso 9

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5
4

Al terminar la función sub_subrutina(), se vuelve a la función subrutina(). Se escribe el valor de la variable "a" de la función subrutina(), que es 4, puesto que es una variable local, distinta de la variable "a" del programa principal.

Anterior Siguiente

Funciones 1 - (13) - Paso 10

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5
4

La instrucción return indica el final de la función subrutina() y continúa la ejecución del programa tras la llamada a la función subrutina().

En este caso, eso significa volver al programa principal.

Anterior Siguiente

Funciones 1 - (13) - Paso 11

def subrutina():
    def sub_subrutina():
        global a
        a = 5
        print(a)
        return

    a = 4
    sub_subrutina()
    print(a)
    return

a = 3
subrutina()
print(a)
5
4
5

Al terminar la función subrutina(), se vuelve al programa principal. Se escribe el valor de la variable "a" que es 5, puesto que se trata de la variable "a" del programa principal, que ha sido modificada en la función sub_subrutina().

Se ejecuta la última instrucción del programa y el programa termina.

Anterior