Professional Documents
Culture Documents
Operaciones aritmticas
Estos ejercicios corresponden a lo explicado en las lecciones Operaciones aritmticas
elementales, Variables, Salida por pantalla y Entrada por teclado.
Operaciones aritmticas - 1
Escriba un programa que pida dos nmeros y que escriba su media aritmtica.
Operaciones aritmticas - 2
Escriba un programa que pida el peso (en kilogramos) y la altura (en metros) de una
persona y que calcule su ndice de masa corporal (imc).
Operaciones aritmticas - 3
1. Escriba un programa que pida una distancia en pies y pulgadas y que escriba esa
distancia en centmetros.
Se recuerda que un pie son doce pulgadas y una pulgada son 2,54 cm.
2. Escriba un programa que pida una distancia en pulgadas y que escriba esa
distancia en centmetros.
3. Escriba un programa que pida una distancia en pies y que escriba esa distancia
en centmetros.
Se recuerda que un pie son doce pulgadas y una pulgada son 2,54 cm.
Operaciones aritmticas - 4
Escriba un programa que pida una temperatura en grados Celsius y que escriba esa
temperatura en grados Fahrenheit.
Se recuerda que la relacin entre grados Celsius (C) y grados Fahrenheit (F) es la
siguiente: F = 1,8 * C + 32
Operaciones aritmticas - 5
Escriba un programa que pida una temperatura en grados Fahrenheit y que escriba esa
temperatura en grados Celsius.
Se recuerda que la relacin entre grados Celsius (C) y grados Fahrenheit (F) es la
siguiente: C = (F - 32) / 1,8
Operaciones aritmticas - 6
Escriba un programa que pida una cantidad de segundos y que escriba cuntos minutos
y segundos son.
Operaciones aritmticas - 7
Escriba un programa que pida una cantidad de segundos y que escriba cuntas horas,
minutos y segundos son.
Operaciones aritmticas - 8
Escriba un programa que pida una cantidad y que escriba cuntas gruesas, docenas y
unidades son.
Variables
Qu es una variable
o Variables en Matemticas
o Variables en Programacin
o Variables en Python
Tipos de variables
Mostrar en IDLE
Utilizar variables
Asignaciones aumentadas
Qu es una variable
Variables en Matemticas
El concepto de "variable" proviene de las Matemticas. En Matemticas, una variable es
un smbolo que forma parte de una expresin o de una frmula. Normalmente las
variables se representan mediante letras del alfabeto latino (x, y, z, n, i, j, etc.).
Dependiendo del contexto, las variables significan cosas distintas. Por ejemplo:
x + 3 = 5
En este caso, la variable x representa una cantidad desconocida pero de la que se
sabe que si se le suma 3 se obtiene 5. Resolviendo la ecuacin, obtenemos
inmediatamente que la variable x estaba representando realmente el nmero 2.
y = x + 1
En este caso, la variable x no representa ningn valor concreto, sino que puede
tomar cualquier valor numrico positivo o negativo. Para cada valor de x
podemos calcular el valor correspondiente de la variable y. Si interpretamos x e
y como las coordenadas de puntos en un plano y dibujamos varios puntos,
podramos ver que todos los puntos se encuentran situados en una misma recta.
Variables en Programacin
En Programacin tambin existe el concepto de "variable", parecido pero no idntico al
concepto matemtico.
a = 2
... lo que estamos pidiendo al programa es que guarde el valor 2 en una "caja" y
que a la caja le llame a.
En esos lenguajes, el smbolo igualdad (=) hay que entenderlo como una
asignacin, no como una igualdad matemtica. Al escribir una igualdad, le
estamos pidiendo al programa que calcule lo que hay a la derecha de la igualdad
y que lo guarde en la variable que hay a la izquierda de la igualdad.
2 = a
... porque 2 no es un nombre vlido de variable. Tampoco estara permitido
escribir ...
x + 3 = 5
... porque en el lado izquierdo no pueden aparecer operadores.
a = 2
b = 3
c = a + b
Variables en Python
En algunos lenguajes de programacin, las variables se pueden entender como "cajas"
en las que se guardan los datos, pero en Python las variables son "etiquetas" que
permiten hacer referencia a los datos (que se guardan en unas "cajas" llamadas objetos).
Para cada dato que aparece en un programa, Python crea un objeto que lo contiene.
Cada objeto tiene:
As, las variables en Python no guardan los datos, sino que son simples nombres para
poder hacer referencia a esos objetos. Si escribimos la instruccin ...
a = 2
... Python:
As, al describir la instruccin anterior no habra que decir 'la variable a almacena el
nmero entero 2', sino que habra que decir 'podemos llamar a al objeto nmero entero
2'. La variable a es como una etiqueta que nos permite hacer referencia al objeto "2",
ms cmoda de recordar y utilizar que el identificador del objeto.
Por otro lado, en Python se distingue entre objetos mutables y objetos inmutables:
En el caso de los objetos inmutables (como los nmeros) no hay mucha diferencia entre
considerar la variable como una caja o como una etiqueta, pero en el caso de los objetos
mutables (como las listas) pensar en las variables como cajas puede llevar a error.
Por economa del lenguaje, en estos apuntes se utilizan expresiones como "guardar un
valor en una variable" en vez de "guardar el valor en un objeto y asociar una variable al
objeto", pero el alumno debe tener presente lo que ocurre en realidad en Python.
Las variables en Python se crean cuando se definen por primera vez, es decir, cuando se
les asigna un valor por primera vez. Para asignar un valor a una variable se utiliza el
operador de igualdad (=). A la izquierda de la igualdad se escribe el nombre de la
variable y a la derecha el valor que se quiere dar a la variable.
>>> x = 2.5
La variable se escribe siempre a la izquierda de la igualdad. Si se escribe al revs,
Python genera un mensaje de error:
>>> 2.5 = x
SyntaxError: can't assign to literal
Para que IDLE muestre el valor de una variable, basta con escribir su nombre:
>>> x = 2.5
>>> x
2.5
Si una variable no se ha definido previamente, escribir su nombre genera un mensaje de
error:
>>> x = -10
>>> y
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
y
NameError: name 'y' is not defined
El nombre de una variable debe empezar por una letra o por un guin bajo (_) y puede
seguir con ms letras, nmeros o guiones bajos.
>>> _x = 3.8
>>> _x
3.8
>>> x1 = 100
>>> x
1100
>>> fecha_de_nacimiento = "27 de octubre de 1997"
>>> fecha_de_nacimiento
'27 de octubre de 1997'
Los nombres de variables pueden contener cualquier carcter alfabtico (las del alfabeto
ingls, pero tambin , o vocales acentuadas) y guones bajos. Lo que no pueden
incluir es espacios en blanco
>>> lambda = 3
SyntaxError: invalid syntax
Los nombres de las variables pueden contener maysculas, pero tenga en cuenta que
Python distingue entre maysculas y minsculas (en ingls se dice que Python es "case-
sensitive").
Tipos de variables
En el apartado anterior hay definiciones de algunos de los tipos de variables que hay en
Python: nmeros decimales, nmeros enteros y cadenas (una o ms letras).
Este ejemplo demuestra tambin que se puede volver a definir una variable. Python
modifica el tipo de la variable automticamente.
Para que IDLE muestre el valor de una variable, basta con escribir su nombre.
>>> a = 2
>>> a
2
Tambin se puede conocer el valor de varias variables a la vez escribindolas entre
comas (IDLE las mostrar entre parntesis porque Python las considera como un
conjunto ordenado llamado tupla), como muestra el siguiente ejemplo:
>>> a = b = 2
>>> c = "pepe"
>>> a
2
>>> c, b
('pepe', 2)
Utilizar o modificar variables ya definidas
Una vez se ha definido una variable, se puede utilizar para hacer clculos o para definir
nuevas variables, como muestran los siguientes ejemplos:
>>> a = 2
>>> a + 3
5
>>> horas = 5
>>> minutos = 60 * horas
>>> segundos = 60 * minutos
>>> segundos
18000
>>> horas = 1
>>> minutos = 2
>>> segundos = 3
>>> segundos + 60 * minutos + 3600 * horas
3723
En caso de utilizar una variable no definida anteriormente, Python genera un mensaje de
error.
>>> a = 10
>>> a = a + 5
>>> a
15
Esto es posible porque el smbolo de igualdad significa siempre asignacin. Lo que hace
Python es calcular la expresin situada a la derecha de la igualdad y despus guardar el
resultado en la variable situada a la izquiereda de la igualdad. En el ejemplo, Python
coge el valor almacenado en la variable a (10), le suma 5, y el resultado (15) lo guarda
en la misma variable a.
Es importante tener presente que las igualdades son siempre asignaciones, nunca
ecuaciones. En el ejemplo, la expresin a = a + 5 no tendra mucho sentido como
ecuacin (no tendra solucin), pero como asignacin lo que hace es aumentar en 5 el
valor de la variable a.
Es importante tambin tener presente que los nombres de las variables no tienen sentido
real para Python, son simples etiquetas para referirse al contenido.
>>> peras = 7
>>> manzanas = 22
>>> peras + manzanas
29
O el siguiente ejemplo en el que Python permite realizar cualquier operacin con las
variables distancia y tiempo, aunque no tengan sentido fsico (de hecho, slo la divisin
lo tiene, es la velocidad).
Hay que tener cuidado al modificar una variable que se ha utilizado para definir otras
variables, porque esto puede afectar al resto de variables:
>>> a = 10
>>> b = a
>>> a, b
(10, 10)
>>> a = 20
>>> a, b
(20, 10)
>>> a = [10]
>>> b = a
>>> a, b
([10], [10])
>>> a[0] = 20
>>> a, b
([20], [20])
Asignaciones aumentadas
Nota:
Por ejemplo:
>>> a = 10
>>> a += 5
>>> a
15
es equivalente a:
>>> a = 10
>>> a = a + 5
>>> a
15
En general:
Asigna
cin
a += b a -= b a *= b a /= b a **= b a //= b a %= b
aumen
tada:
es a a a a a a a
equivalente = = =
a: = = = =
a a a a a
a a
* / %
+ * * /
- /
b b b
b b
b b
Nota: Las dos notaciones son completamente equivalentes en el caso de los objetos
inmutables (nmeros, cadenas, tuplas), pero en el caso de los objetos mutables (listas,
diccionarios, etc.) hay una pequea diferencia que se comenta en la leccin Variables 2
Lo que no se permite en Python son los operadores incremento (++) o decremento (--)
que s existen en otros lenguajes de programacin:
>>> a = 5
>>> a++
SyntaxError: invalid syntax
Definir y modificar varias variables a la vez
En una misma lnea se pueden definir simultneamente varias variables, con el mismo
valor o con valores distintos, como muestra el siguiente ejemplo:
>>> a = b = 99
>>> c, d, e = "Mediterrneo", 10, ["pan", "queso"]
En el primer caso las dos variables tendrn el mismo valor. En el segundo caso la
primera variable tomar el primer valor y as sucesivamente.
>>> a, b, c = 1, 2
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
a, b, c = 1, 2
ValueError: need more than 2 values to unpack
>>> a, b, c = 1, 2, 3, 4
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
a, b, c = 1, 2, 3, 4
ValueError: too many values to unpack
>>> a, b = 5, 10
>>> a, b
(5, 10)
>>> a, b = b, a
>>> a, b
(10, 5)
Obsrvese que si este procedimiento lo hubiramos hecho paso a paso, el resultado
hubiera sido distinto:
>>> a, b = 5, 10
>>> a, b
(5, 10)
>>> a = b
>>> b = a
>>> a, b
(10, 10)
El motivo de este resultado se entiende fcilmente mostrando los valores tras cada
operacin:
>>> a, b = 5, 10
>>> a, b
(5, 10)
>>> a = b
>>> a, b
(10, 10)
>>> b = a
>>> a, b
(10, 10)
Funciones (1)
Funciones (1)
Crear funciones
Variables en funciones
o Conflictos de nombres
o Conflictos en Python
o Variables locales
o Variables libres
Las instrucciones que forman la funcin se escriben con sangra con respecto a la
primera lnea.
Por comodidad, se puede indicar el final de la funcin con la palabra reservada return
(ms adelante se explica el uso de esta palabra reservada), aunque no es obligatorio.
Para poder utilizar una funcin en un programa se tiene que haber definido antes. Por
ello, normalmente las definiciones de las funciones se suelen escribir al principio de los
programas
Ejemplo de funcin
def licencia():
print("Copyright 2013 Bartolom
Sintes Marco")
Este programa no hace nada
print("Licencia CC-BY-SA 4.0")
interesante.
return
Copyright 2013 Bartolom
Sintes Marco
print("Este programa no hace nada
Licencia CC-BY-SA 4.0
interesante.")
Programa terminado.
licencia()
print("Programa terminado.")
Puede ver la ejecucin paso a paso de este programa utilizando los iconos de avance y
retroceso situados abajo a la derecha.
def licencia():
print("Copyright 2013 Bartolom Sintes Marco")
print("Licencia CC-BY-SA 4.0")
return
print("Este programa no hace nada interesante.")
licencia()
print("Programa terminado.")
La definicin de la funcin no provoca ninguna salida del programa. Las instrucciones
que forman parte de la funcin se ejecutan nicamente cuando se llama a la funcin en
el programa.
def licencia():
print("Copyright 2013 Bartolom
Sintes Marco")
print("Licencia CC-BY-SA 4.0")
return Este programa no hace nada
interesante.
print("Este programa no hace nada
interesante.")
licencia()
print("Programa terminado.")
La primera instruccin que se ejecuta es la que est despus de la definicin de la
funcin.
def licencia():
print("Copyright 2013 Bartolom
Sintes Marco")
print("Licencia CC-BY-SA 4.0")
return Este programa no hace nada
interesante.
print("Este programa no hace nada
interesante.")
licencia()
print("Programa terminado.")
A continuacin se encuentra la llamada a la funcin. Como tal, la llamada no produce
ninguna salida del programa, pero hace que a continuacin se ejecuten las instrucciones
incluidas en la funcin.
def licencia():
print("Copyright 2013 Bartolom
Sintes Marco")
Este programa no hace nada
print("Licencia CC-BY-SA 4.0")
interesante.
return
Copyright 2013 Bartolom
Sintes Marco
print("Este programa no hace nada
Licencia CC-BY-SA 4.0
interesante.")
licencia()
print("Programa terminado.")
Se ejecuta la segunda instruccin de la funcin.
def licencia():
print("Copyright 2013 Bartolom
Sintes Marco")
Este programa no hace nada
print("Licencia CC-BY-SA 4.0")
interesante.
return
Copyright 2013 Bartolom
Sintes Marco
print("Este programa no hace nada
Licencia CC-BY-SA 4.0
interesante.")
licencia()
print("Programa terminado.")
La instruccin return indica el final de la funcin y contina la ejecucin del programa
tras la llamada a la funcin.
El ejemplo siguiente muestra un programa incorrecto que intenta utilizar una funcin
antes de haberla definido.
Puede ver la ejecucin paso a paso de este programa utilizando los iconos de avance y
retroceso situados abajo a la derecha.
Variables en funciones
Variables locales
def subrutina():
a = 2
print(a)
return 2
5
a = 5
subrutina()
print(a)
Puede ver la ejecucin paso a paso de este programa utilizando los iconos de
avance y retroceso situados abajo a la derecha.
def subrutina():
a = 2
print(a)
return
a = 5
subrutina()
print(a)
La primera instruccin del programa asigna el valor 5 a la variable "a".
a = 5
subrutina()
print(a)
A continuacin se llama a la funcin subrutina().
def subrutina():
a = 2
print(a)
return
a = 5
subrutina()
print(a)
La primera instruccin de la funcin asigna el valor 2 a la variable "a".
def subrutina():
a = 2
print(a)
return 2
a = 5
subrutina()
print(a)
La segunda instruccin escribe el valor de la variable "a", es decir, 2.
def subrutina(): 2
a = 2
print(a)
return
a = 5
subrutina()
print(a)
La instruccin return indica el final de la funcin y contina la ejecucin del
programa tras la llamada a la funcin.
def subrutina():
a = 2
print(a)
return 2
5
a = 5
subrutina()
print(a)
La ltima instruccin del programa escribe de nuevo el valor de "a", pero el
valor que se escribe no es 2, sino 5, ya que la variable "a" del programa es
distinta de la variable "a" de la funcin, aunque se llamen igual.
def subrutina():
a = 2 2
print(a) Traceback (most recent call last):
return File "ejemplo.py", line 7, in <module>
print(a)
subrutina() NameError: name 'a' is not defined
print(a)
Puede ver la ejecucin paso a paso de este programa utilizando los iconos de
avance y retroceso situados abajo a la derecha.
def subrutina():
a = 2
print(a)
return
subrutina()
print(a)
La primera instruccin del programa llama a la funcin subrutina().
def subrutina():
a = 2
print(a)
return
subrutina()
print(a)
La primera instruccin de la funcin asigna el valor 2 a la variable "a".
def subrutina():
a = 2
print(a)
return 2
subrutina()
print(a)
La segunda instruccin escribe el valor de la variable "a", es decir, 2.
def subrutina():
a = 2
print(a)
return 2
subrutina()
print(a)
La instruccin return indica el final de la funcin y contina la ejecucin del
programa tras la llamada a la funcin.
Ejemplo de variable local 2 - Paso 5
def subrutina():
a = 2 2
print(a) Traceback (most recent call last):
return File "ejemplo.py", line 7, in <module>
print(a)
subrutina() NameError: name 'a' is not defined
print(a)
La ltima instruccin del programa da error porque la variable "a" no existe para
el programa, ya que se cre en la funcin.
def subrutina():
print(a) Traceback (most recent call last):
a = 2 File "ejemplo.py", line 8, in <module>
print(a) subrutina()
return File "ejemplo.py", line 2, in subrutina
print(a)
a = 5 UnboundLocalError: local variable 'a' referenced
subrutina() before assignment
print(a)
Puede ver la ejecucin paso a paso de este programa utilizando los iconos de
avance y retroceso situados abajo a la derecha.
def subrutina():
print(a)
a = 2
print(a)
return
a = 5
subrutina()
print(a)
La primera instruccin del programa asigna el valor 5 a la variable "a".
Ejemplo de variable local 3 - Paso 2
def subrutina():
print(a)
a = 2
print(a)
return
a = 5
subrutina()
print(a)
A continuacin se llama a la funcin subrutina().
def subrutina():
print(a) Traceback (most recent call last):
a = 2 File "ejemplo.py", line 8, in <module>
print(a) subrutina()
return File "ejemplo.py", line 2, in subrutina
print(a)
a = 5 UnboundLocalError: local variable 'a' referenced
subrutina() before assignment
print(a)
La primera instruccin de la funcin produce un mensaje de error. El motivo es
que en la funcin se asigna valor a la variable "a" (concretamente en la segunda
instruccin) y por tanto Python la considera variable local. Como la primera
instruccin quiere imprimir el valor de "a", pero a esa variable todava no se le
ha dado valor en la funcin (el valor de la variable "a" del programa principal no
cuenta pues se trata de variables distintas, aunque se llamen igual), se produce el
mensaje de error.
def subrutina():
print(a)
return
5
5
a = 5
subrutina()
print(a)
Puede ver la ejecucin paso a paso de este programa utilizando los
iconos de avance y retroceso situados abajo a la derecha.
def subrutina():
print(a)
return
a = 5
subrutina()
print(a)
La primera instruccin del programa asigna el valor 5 a la variable "a".
def subrutina():
print(a)
return
a = 5
subrutina()
print(a)
A continuacin se llama a la funcin subrutina().
def subrutina(): 5
print(a)
return
a = 5
subrutina()
print(a)
En la funcin subrutina(), la variable "a" es libre puesto que no se le
asigna valor. Su valor se busca en los niveles superiores, por orden. En
este caso, el nivel inmediatamente superior es el programa principal.
Como en l hay una variable que tambin se llama "a", Python coge de
ella el valor (en este caso, 5) y lo imprime. Para la funcin subrutina(), la
variable "a" es una variable global, porque su valor proviene del
programa principal.
def subrutina():
print(a)
return
5
a = 5
subrutina()
print(a)
La instruccin return indica el final de la funcin y contina la ejecucin
del programa tras la llamada a la funcin.
def subrutina():
print(a)
return
5
5
a = 5
subrutina()
print(a)
La ltima instruccin del programa escribe de nuevo el valor de "a", que
sigue siendo 5 pues la funcin no ha modificado el valor de la variable.
a = 3 3
sub_subrutina() 3
print(a) 4
return
a = 4
subrutina()
print(a)
Puede ver la ejecucin paso a paso de este programa utilizando los
iconos de avance y retroceso situados abajo a la derecha.
def subrutina():
def sub_subrutina():
print(a)
return
a = 3
sub_subrutina()
print(a)
return
a = 4
subrutina()
print(a)
La primera instruccin del programa asigna el valor 4 a la variable "a".
def subrutina():
def sub_subrutina():
print(a)
return
a = 3
sub_subrutina()
print(a)
return
a = 4
subrutina()
print(a)
A continuacin se llama a la funcin subrutina().
def subrutina():
def sub_subrutina():
print(a)
return
a = 3
sub_subrutina()
print(a)
return
a = 4
subrutina()
print(a)
La primera instruccin de la funcin subrutina() asigna el valor 3 a la
variable "a", as que esta variable "a" ser una variable local.
def subrutina():
def sub_subrutina():
print(a)
return
a = 3
sub_subrutina()
print(a)
return
a = 4
subrutina()
print(a)
A continuacin se llama a la funcin sub_subrutina().
def subrutina(): 3
def sub_subrutina():
print(a)
return
a = 3
sub_subrutina()
print(a)
return
a = 4
subrutina()
print(a)
En la funcin sub_subrutina(), la variable "a" es libre puesto que no se le
asigna valor. Su valor se busca en los niveles superiores, por orden. En
este caso, el nivel inmediatamente superior es la funcin subrutina().
Como en ella hay una variable local que tambin se llama "a", Python
coge de ella el valor (en este caso, 3) y lo imprime. Para la funcin
sub_subrutina(), la variable "a" es una variable no local, porque su valor
proviene de una funcin intermedia.
def subrutina():
def sub_subrutina():
print(a)
return
a = 3
sub_subrutina() 3
print(a)
return
a = 4
subrutina()
print(a)
La instruccin return indica el final de la funcin y contina la ejecucin
del programa tras la llamada a la funcin.
def subrutina(): 3
def sub_subrutina(): 3
print(a)
return
a = 3
sub_subrutina()
print(a)
return
a = 4
subrutina()
print(a)
La tercera instruccin de la funcin subrutina() escribe el valor de la
variable local "a", es decir, 3.
def subrutina():
def sub_subrutina():
print(a)
return
a = 3
3
sub_subrutina()
3
print(a)
return
a = 4
subrutina()
print(a)
La instruccin return indica el final de la funcin y contina la ejecucin
del programa tras la llamada a la funcin.
def subrutina():
def sub_subrutina():
print(a)
return
a = 3 3
sub_subrutina() 3
print(a) 4
return
a = 4
subrutina()
print(a)
La ltima instruccin del programa escribe el valor de la variable global
"a", 4.
o Si a una variable que Python considera libre (porque no se le
asigna valor en la funcin) tampoco se le asigna valor en
niveles superiores, Python dar un mensaje de error, como
muestra el programa siguiente:
def subrutina():
print(a)
return
subrutina()
print(a)
La primera instruccin del programa llama a la funcin subrutina().
def subrutina():
global a
print(a)
a = 1
5
return
1
a = 5
subrutina()
print(a)
Puede ver la ejecucin paso a paso de este programa utilizando los
iconos de avance y retroceso situados abajo a la derecha.
def subrutina():
global a
print(a)
a = 1
return
a = 5
subrutina()
print(a)
La primera instruccin del programa asigna el valor 5 a la variable "a".
def subrutina():
global a
print(a)
a = 1
return
a = 5
subrutina()
print(a)
A continuacin se llama a la funcin subrutina().
def subrutina():
global a
print(a)
a = 1
return
a = 5
subrutina()
print(a)
Al declarar global la variable "a", la variable "a" de la funcin y la
variable "a" del programa principal son la misma variable.
def subrutina():
global a
print(a)
a = 1
return 5
a = 5
subrutina()
print(a)
La segunda instruccin de la funcin escribe el valor de la variable "a",
es decir, 5, puesto que se trata de la misma variable "a" del programa
principal.
def subrutina(): 5
global a
print(a)
a = 1
return
a = 5
subrutina()
print(a)
La siguiente instruccin cambia el valor de la variable "a" a 1.
def subrutina():
global a
print(a)
a = 1
return 5
a = 5
subrutina()
print(a)
La instruccin return indica el final de la funcin y contina la ejecucin
del programa tras la llamada a la funcin.
def subrutina():
global a
print(a)
a = 1
5
return
1
a = 5
subrutina()
print(a)
La ltima instruccin del programa escribe el valor de la variable global
"a", que es ahora 1, puesto que la funcin ha modificado el valor de la
variable.
a = 4
subrutina()
print(a)
Puede ver la ejecucin paso a paso de este programa utilizando los
iconos de avance y retroceso situados abajo a la derecha.
def subrutina():
def sub_subrutina():
nonlocal a
print(a)
a = 1
return
a = 3
sub_subrutina()
print(a)
return
a = 4
subrutina()
print(a)
La primera instruccin del programa asigna el valor 4 a la variable "a".
def subrutina():
def sub_subrutina():
nonlocal a
print(a)
a = 1
return
a = 3
sub_subrutina()
print(a)
return
a = 4
subrutina()
print(a)
A continuacin se llama a la funcin subrutina().
def subrutina():
def sub_subrutina():
nonlocal a
print(a)
a = 1
return
a = 3
sub_subrutina()
print(a)
return
a = 4
subrutina()
print(a)
La primera instruccin de la funcin subrutina() asigna el valor 3 a la
variable "a", as que esta variable "a" ser una variable local.
def subrutina():
def sub_subrutina():
nonlocal a
print(a)
a = 1
return
a = 3
sub_subrutina()
print(a)
return
a = 4
subrutina()
print(a)
A continuacin se llama a la funcin sub_subrutina().
Ejemplo de variable declarada nonlocal - Paso 5
def subrutina():
def sub_subrutina():
nonlocal a
print(a)
a = 1
return
a = 3
sub_subrutina()
print(a)
return
a = 4
subrutina()
print(a)
Al declarar nonlocal la variable "a", Python busca en los niveles
superiores, por orden, una variable que tambin se llame "a", que en este
caso se encuentra en la funcin subrutina(). Python toma el valor de esa
variable, es decir, 3.
def subrutina():
def sub_subrutina():
nonlocal a
print(a)
a = 1
return
a = 3 3
sub_subrutina()
print(a)
return
a = 4
subrutina()
print(a)
La primera instruccin de la funcin sub_subrutina() escribe el valor de
la variable no local "a", es decir, 3.
a = 3 3
sub_subrutina()
print(a)
return
a = 4
subrutina()
print(a)
La segunda instruccin de la funcin sub_subrutina() cambia el valor de
la variable "a" a 1.
def subrutina():
def sub_subrutina():
nonlocal a
print(a)
a = 1
return
a = 3 3
sub_subrutina()
print(a)
return
a = 4
subrutina()
print(a)
La instruccin return indica el final de la funcin y contina la ejecucin
del programa tras la llamada a la funcin.
def subrutina(): 3
def sub_subrutina(): 1
nonlocal a
print(a)
a = 1
return
a = 3
sub_subrutina()
print(a)
return
a = 4
subrutina()
print(a)
La tercera instruccin de la funcin subrutina() escribe el valor de la
variable local "a", es decir, 1.
def subrutina():
def sub_subrutina():
nonlocal a
print(a)
a = 1
return
3
a = 3
1
sub_subrutina()
print(a)
return
a = 4
subrutina()
print(a)
La instruccin return indica el final de la funcin y contina la ejecucin
del programa tras la llamada a la funcin.
def subrutina():
def sub_subrutina():
nonlocal a
print(a)
a = 1
return
3
a = 3 1
sub_subrutina() 4
print(a)
return
a = 4
subrutina()
print(a)
La ltima instruccin del programa escribe el valor de la variable global
"a", que sigue siendo 4, puesto que ninguna funcin la ha modificado.
def subrutina():
def sub_subrutina():
nonlocal a
print(a)
a = 1
return
sub_subrutina()
print(a)
return
a = 4
subrutina()
print(a)
Puede ver la ejecucin paso a paso de este programa utilizando los
iconos de avance y retroceso situados abajo a la derecha.
Elementos
Elementos de un programa
Lneas y espacios
keywords
Literales
Operadores
Delimitadores
Identificadores
o built-in functions
o Funciones
Elementos de un programa
literales
operadores
delimitadores
identificadores
Para que un programa se pueda ejecutar, el programa debe ser sintcticamente correcto,
es decir, utilizar los elementos del lenguaje Python respetando su reglas de
"ensamblaje". Esas reglas se comentan en otras lecciones de este curso. Obviamente,
que un programa se pueda ejecutar no significa que un programa vaya a realizar la tarea
deseada, ni que lo vaya a hacer en todos los casos.
Lneas y espacios
radio = 5
area = 3.14159242 * radio ** 2
print(area)
Se recomienda que cada lnea contenga una nica instruccin, aunque puede haber
varias instrucciones en una lnea, separadas por un punto y coma (;).
radio = 5; area = 3.14159242 * radio ** 2
print(area)
Por motivos de legibilidad, se recomienda que las lneas no superen los 79 caracteres. Si
una instruccin supera esa longitud, se puede dividir en varias lneas usando el caracter
contrabarra (\):
radio = 5
area = 3.14159265358979323846 \
* radio ** 2
print(area)
Los elementos del lenguaje se separan por espacios en blanco (normalmente, uno),
aunque en algunos casos no se escriben espacios:
Los espacios no son significativos, es decir, da lo mismo un espacio que varios, excepto
al principio de una lnea.
Los espacios al principio de una lnea (el sangrado) indican un nivel de agrupamiento.
El sangrado inicial es una de las caractersticas de Python que lo distinguen de otros
lenguajes, que utilizan un caracter para delimitar agrupamientos (en muchos lenguajes
se utilizan las llaves { }). Por ello, una lnea no puede contener espacios iniciales, a
menos que forme parte de un bloque de instrucciones o de una instruccin dividida en
varias lneas.
>>> x = 42
SyntaxError: unexpected indent
Al ejecutar un programa, se mostrara una ventana con el mensaje de error de sintaxis:
x = 42
El carcter almohadilla (#) marca el inicio de un comentario. Python ignora el resto de
la lnea (desde la almohadilla hasta el final de la lnea).
Las palabras reservadas de Python son las que forman el ncleo del lenguaje Python.
Son las siguientes:
Literales
Los literales son los datos simples que Python es capaz de manejar:
cadenas de texto
Operadores
Los operadores son los caracteres que definen operaciones matemticas (lgicas y
aritmticas). Son los siguientes:
+ - * ** / // % @
<< >> & | ^ ~
< > <= >= == !=
Delimitadores
Los delimitadores son los caracteres que permiten delimitar, separar o representar
expresiones. Son los siguientes:
' " # \
( ) [ ] { }
, : . ; @ = ->
+= -= *= /= //= %= @=
&= |= ^= >>= <<= **=
Identificadores
Los identificadores son las palabras que se utilizan para nombrar elementos creados por
el usuario u otros usuarios. Esos elementos pueden ser variables u objetos que
almacenan informacin, funciones que agrupan instrucciones, clases que combinan
ambos, mdulos que agrupan los elementos anteriores, etc.
Python incluye las siguientes funciones de forma predeterminada (es decir, estas
funciones siempre estn disponibles):
Funciones adicionales
Un programa puede definir nuevas funciones o redefinir las funciones integradas. Los
nombres de las funciones no pueden coincidir con las palabras reservadas.
Desde hace unos aos, las versiones X.Y se publican aproximadamente cada ao
y medio y se mantienen durante cinco aos, excepto la versin 2.7, que se
mantendr por lo menos durante diez aos, hasta 2020.
Normalmente, se publica una ltima versin X.Y.Z justo antes de que una
versin X.Y deje de mantenerse. Algunas empresas comerciales ofrecen el
mantenimiento de versiones antiguas una vez acabado el mantenimiento oficial.
Python 2010 2010 2011 2011 2012 2012 2013 2013 2014 2014 2015 2015 2016 2016
2017 2017 2018 2018 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.7.10 2.7.11
2.7.12 2.7.13 2.7 3.2 3.3 3.4 3.5 3.6 3.7 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.3.1 3.3.2
3.3.3 3.3.4 3.3.5 3.3.6 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.6 3.5.1 3.5.2 3.5.3 3.6.1
Es posible tener instalados en el ordenador varias versiones de Python pero, salvo que
sea necesario para la ejecucin de programas o paquetes incompatibles, se recomienda
instalar siempre la ltima versin disponible.
Referencias
o Python 2.X: 2.0 - 2.1 - 2.2 - 2.3 - 2.4 - 2.5 - 2.6 - 2.7
o Python 3.X: 3.0 - 3.1 - 3.2 - 3.3 - 3.4 - 3.5 - 3.6 - 3.7
o Python 3.X: 3.0 - 3.1 - 3.2 - 3.3 - 3.4 - 3.5 - 3.6 - 3.7
La intencin inicial era haber terminado Python 2 con la versin 2.6, pero en 2010 se
tuvo que publicar la versin 2.7, incorporando parte de las novedades de Python 3.
Adems, el perodo de mantenimiento de Python 2.7 se tuvo que duplicar de los cinco
aos habituales a diez, hasta 2020.
Un primer obstculo en el proceso de transicin de Python 2 a Python 3 ha sido la
propia disponibilidad de Python 3 en las distribuciones GNU/Linux. Muchas
herramientas internas de las distribuciones estn escritas en Python y su conversin de
Python 2 a Python 3 no era fcil, por lo que las distribuciones no podan pasar
simplemente de incluir una versin a otra.
Python cuenta con un gran nmero de bibliotecas, cuyo repositorio oficial es PyPI
(Python Package Index), que facilitan la programacin de aplicaciones complejas.
Cuando se public Python 3, la inmensa mayora de bibliotecas slo estaban disponibles
para Python 2 y, lgicamente, si un programa necesitaba alguna biblioteca que slo
estaba disponible para Python 2, el programa no se poda pasar tampoco a Python 3.
Poco a poco, la mayora de bibliotecas de Python han ido publicando versiones para
Python 3, por lo que este problema tambin est en vas de solucin.
Versiones de Python
Desde hace unos aos, las versiones X.Y se publican aproximadamente cada ao
y medio y se mantienen durante cinco aos, excepto la versin 2.7, que se
mantendr por lo menos durante diez aos, hasta 2020.
Normalmente, se publica una ltima versin X.Y.Z justo antes de que una
versin X.Y deje de mantenerse. Algunas empresas comerciales ofrecen el
mantenimiento de versiones antiguas una vez acabado el mantenimiento oficial.
Python 2010 2010 2011 2011 2012 2012 2013 2013 2014 2014 2015 2015 2016 2016
2017 2017 2018 2018 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.7.10 2.7.11
2.7.12 2.7.13 2.7 3.2 3.3 3.4 3.5 3.6 3.7 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.3.1 3.3.2
3.3.3 3.3.4 3.3.5 3.3.6 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.6 3.5.1 3.5.2 3.5.3 3.6.1
Es posible tener instalados en el ordenador varias versiones de Python pero, salvo que
sea necesario para la ejecucin de programas o paquetes incompatibles, se recomienda
instalar siempre la ltima versin disponible.
Referencias
o Python 2.X: 2.0 - 2.1 - 2.2 - 2.3 - 2.4 - 2.5 - 2.6 - 2.7
o Python 3.X: 3.0 - 3.1 - 3.2 - 3.3 - 3.4 - 3.5 - 3.6 - 3.7
Sobre los cambios en Python 3 (Nick Coghlan)
o Python 3.X: 3.0 - 3.1 - 3.2 - 3.3 - 3.4 - 3.5 - 3.6 - 3.7
La intencin inicial era haber terminado Python 2 con la versin 2.6, pero en 2010 se
tuvo que publicar la versin 2.7, incorporando parte de las novedades de Python 3.
Adems, el perodo de mantenimiento de Python 2.7 se tuvo que duplicar de los cinco
aos habituales a diez, hasta 2020.
Python cuenta con un gran nmero de bibliotecas, cuyo repositorio oficial es PyPI
(Python Package Index), que facilitan la programacin de aplicaciones complejas.
Cuando se public Python 3, la inmensa mayora de bibliotecas slo estaban disponibles
para Python 2 y, lgicamente, si un programa necesitaba alguna biblioteca que slo
estaba disponible para Python 2, el programa no se poda pasar tampoco a Python 3.
Poco a poco, la mayora de bibliotecas de Python han ido publicando versiones para
Python 3, por lo que este problema tambin est en vas de solucin.
Archivos de programas
Ejecutar en terminal
Python e IDLE
Python es el nombre del lenguaje de programacin.
Al abrir IDLE con el acceso directo Inicio > Todos los programas > Python 3.6 > IDLE
(Python 3.6), se abrir la ventana principal de IDLE, como muestra la imagen siguiente.
Nota: La ventana de la imagen tiene un tamao de 80x20 caracteres en vez del tamao
predeterminado de 80x40 caracteres
En la ventana de IDLE se pueden escribir rdenes de Python despus del smbolo de
peticin >>> (en ingls, prompt). Al pulsar Intro, IDLE ejecutar la orden
inmediatamente. Si la orden produce algn resultado, ste se mostrar en color azul y
sin el smbolo de peticin. Por ejemplo, se puede comprobar que Python sabe sumar dos
ms dos:
>>> 2 + 2
4
>>>
Alt+n para ver la instruccin siguiente (supongo que n es por next, en espaol,
siguiente)
Las palabras reservadas de Python (las que forman parte del lenguaje) se
muestran en color naranja.
Las cadenas de texto deben delimitarse con comillas dobles (") o con comillas simples
('):
>>> print('hola')
hola
>>> print("hola")
hola
>>>
Si la orden contiene algn error, Python escribe un mensaje de error en ingls que indica
dnde se ha producido el error y por qu.
>>> print(hola)
Traceback (most recent call last):
File "<pyshell#3>", line 1, in ?
print hola
NameError: name 'hola' is not defined
>>>
En este ejemplo, el error se debe a que hola no est entre comillas y Python entiende
que se hace referencia a una variable que se llama hola; al no estar definida previamente
ninguna variable que se llame as, se produce un error.
Los argumentos de las funciones deben ir rodeados de parntesis (en los ejemplos
anteriores, la funcin es la funcin print() y el argumento de la funcin, es decir, lo que
se le da a la funcin para que haga su trabajo, es la cadena de texto). Si no se escriben
los parntesis, Python indica que se ha cometido un error de sintaxis:
print("Hola, mundo")
print("Adios, mundo")
Habr observado que en esta ventana, cuando se pulsa Intro, no se ejecuta la orden, sino
que simplemente se pasa a la lnea siguiente.
Por otro lado, como el instalador de Python registra la extensin .py, se puede ejecutar
un programa de Python en Windows haciendo doble clic sobre l en el explorador de
Windows. El problema es que los programas se ejecutan en una ventana de MS-DOS
que se abre al iniciarse el programa y que se cierra cuando el programa termina. Para
evitar que los programas terminen, se puede aadir una ltima lnea con la funcin
input() que, como se explica en la leccin sobre la entrada por teclado, se queda
esperando a que pulsemos la tecla Intro. Al pulsar Intro, la ventana se cerrar.
###Lectura:
archivo.txt:
archivo = open("archivo.txt")
Si queremos obtener el contenido del archivo, existen tres mtodos:
archivo = open("archivo.txt")
archivo = open("archivo.txt")
print(archivo.read(16))
print(archivo.read())
Resultado:
archivo = open("archivo.txt")
print(archivo.read(30))
Resultado:
archivo = open("archivo.txt")
print(archivo.readlines())
Resultado:
###Escritura:
archivo.write("Hola")
archivo.txt:
Hola
archivo.write("HOLA")
archivo.seek(1)
archivo.seek(0)
archivo.writelines(tupla)
archivo.txt:
Hola :B
Soy Bata..
###Combinacin de mtodos:
###Cierre:
Despus de haber realizado todas las actividades que se esperaban con el archivo, debe
cerrarse y para eso existe el mtodo .close(), luego de esto ya no podr realizarse
ninguna actividad sobre el archivo con el objeto a menos que vuelva a definirse.
archivo = open("archivo.txt")
print(archivo.read())
archivo.seek(0)
archivo.close()
print(archivo.read())
Resultado:
Hola :B
Soy Bata..
Traceback (most recent call last):
File "script.py", line 8, in <module>
print(archivo.read())
ValueError: I/O operation on closed file.
Tambin existe la estructura with que se encarga de cerrar el archivo despus que
finalicen las sentencias dentro de el:
print(archivo.read())
Resultado:
Hola :B
Soy Bata..
Traceback (most recent call last):
File "script.py", line 4, in <module>
print(archivo.read())
ValueError: I/O operation on closed file.
##Referencias
creamostuweb https://www.blogger.com/profile/05907170252728070066.
Programacion en python. http://pycol.blogspot.com/