Se ofrecen a continuación unas posibles soluciones de los ejercicios (1) de funciones.
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.
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.
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().
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.
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.
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).
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().
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.
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.
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().
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.
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.
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.
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().
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.
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.
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.
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().
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.
Funciones 1 - (04)
def subrutina():
nonlocal a
print(a)
a = 32
return
a = 31
subrutina()
print(a)
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.
Funciones 1 - (04) - Paso 1
def subrutina():
nonlocal a
print(a)
a = 32
return
a = 31
subrutina()
print(a)
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.
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.
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.
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().
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.
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.
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.
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.
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().
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".
Por tanto, la variable "a" local toma el valor de la variable global "b", es decir, 3.
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.
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()
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.
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.
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.
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()
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.
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.
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()
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.
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().
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.
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.
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.
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().
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.
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.
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.
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().
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.
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().
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.
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.
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().
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.
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.
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.
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.
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.
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.
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.
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.
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().
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.
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.
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().
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.
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.
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().
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.
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.
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.
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.
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.
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().
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.
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.
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().
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.
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.
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.
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().
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).
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.
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.
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.
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.
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().
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.
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.
Funciones 1 - (13) - Paso 1
def subrutina():
def sub_subrutina():
global a
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.
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().
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.
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().
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.
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.
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.
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().
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.
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.
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.