1
IDEs y sitios de descarga: Se sugiere Anaconda
https://repo.anaconda.com/archive/Anaconda3-2020.07-Windows-x86_64.exe
https://www.python.org/ftp/python/3.7.9/python-3.7.9.exe
2
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
Python
Es un lenguaje con identacion
Por ejemplo, en C
int factorial(int x)
{
if (x < 0 || x % 1 != 0){
printf("x debe ser un numero entero mayor o igual a 0");
return -1; //Error
}
else if (x == 0)
return 1;
else
return x * factorial(x - 1);
}
En Python
def factorial(x):
assert x >= 0 and x % 1 == 0, "x debe ser un entero mayor o igual a 0."
if x == 0:
return 1
else:
return x * factorial(x - 1)
www.robotechnics.es 3
CURSO DE INTRODUCCIÓN A PYTHON 16
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
Python
Es un lenguaje Open Source, del que existen diversas implementaciones del lenguaje:
CPython es la implementación original (realizada en C), disponible para varias plataformas en
el sitio oficial de Python.
IronPython es la implementación para .NET
Jython es la implementación hecha en Java
Todo lo que puedes hacer con Java también lo puedes hacer con Python
Incluso puedes acceder a través de Python a las API de Java si usas Jython
(http://www.jython.org)
Cada una de estas versiones aprovechan las ventajas del programa en el que están diseñadas
www.robotechnics.es 4
CURSO DE INTRODUCCIÓN A PYTHON 17
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
Introducción a Python
Python tiene tipado dinámico de las variables:
En Java, por ejemplo, escribiríamos:
String c = "Hola Mundo";
int e = 23;
Sin embargo, en Python, los tipos de variables
pueden cambiar de forma dinamica:
c = “Hola Mundo”
C= 23
La variables son objetos que apuntan a una dirección de memoria. Cuando se cambian de forma
dinámica, el mismo objeto apunta a otra dirección y la dirección antigüa se borra automáticamente
www.robotechnics.es 5
CURSO DE INTRODUCCIÓN A PYTHON 18
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
Introducción a Python: Paradigmas de programación
Existen decenas de paradigmas de programación, los más importantes son:
• Procedural: En la programación procedural se le dan ordenes directas a la computadora, que van
cambiando el estado del programa. Ejemplo: BASIC
• Estructurada: Es un caso particular de programación procedural, la diferencia es que hay un flujo
ordenado (jerárquico) con alguna combinación de los siguientes elementos: Secuencias, selección
y repetición. Se reutilizan bloques de código y es relativamente fácil seguir la lógica del programa.
Ejemplo: C, Pascal.
• Orientada a objetos: Se usan estructuras de datos que tienen datos y métodos (objetos) con sus
interacciones para diseñar programas. Ejemplos: Java, C++
Python suele ser clasificado como "multiparadigma" debido a que puede ser usado tanto de
manera estructurada como orientado a objetos. Esto depende de las preferencias del
programador, no impone uno de los dos métodos
www.robotechnics.es 6
CURSO DE INTRODUCCIÓN A PYTHON 19
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
Diferencias entre Python 2.7 y 3.0
Print es una función en python 3
En Python 2 → print "hola mundo"
En Python 3 → print ("hola mundo")
División de números enteros. print (3 / 2)
En Python 2 → = 1
En Python 3 → = 1.5
Las “cadenas” (“strings”) son Unicode de forma predeterminada en python 3
Input es una cadena de texto en python 3
La función next() y el método .next()
En python 2 se puede usar next tanto como una función next(algo) o como un método
algo.next(), sin embargo en Python 3 solo se puede usar como función:
www.robotechnics.es 7
CURSO DE INTRODUCCIÓN A PYTHON 20
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
Diferencias entre Python 2.7 y 3.0
Manejo de Exepciones
En python 2 se acepta las dos maneras de escribir una excepción (sin paréntesis o con paréntesis
como si fuera una función), en cambio en python 3 solo se acepta de la segunda forma.
Hay mas cambios … pero los dejamos de momento
www.robotechnics.es 8
CURSO DE INTRODUCCIÓN A PYTHON 21
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
Introducción a Python
• En windows: abrir ventana de terminal y poner
python mifichero.py (En Linux python3 mifichero.py)
Si no se ejecuta, es necesario comprobar las variables de entorno que es donde se buscan los
programas que se pueden ejecutar.
En Windows, en “Mi Equipo” ir a Propiedades / Config Avanzada del sistema/Variables de
entorno/Variables del Sistema
En la variable PATH hay que añadir el directorio donde esté el intérprete de Python
Normalmente:
Se añade con “;” + directorio y se cierra el terminal para que se actualice
Hemos invocado al intérprete para que coja el código fuente y lo ejecute
Previamente lo ha analizado para ver que cumple las reglas del lenguaje
Si se genera el código intérprete aparecerá el fichero: mifichero.pyc
www.robotechnics.es 9
CURSO DE INTRODUCCIÓN A PYTHON 22
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
Tipos de Datos
www.robotechnics.es 10
CURSO DE INTRODUCCIÓN A PYTHON 23
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
TIPOS DE DATOS
www.robotechnics.es 11
CURSO DE INTRODUCCIÓN A PYTHON 24
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
PALABRAS RESERVADAS EN PYTHON
False class finally is return
None continue for lambda try
True def from nonlocal while
and del global not with
as elif if or yield
assert else import pass
break except in raise
www.robotechnics.es 12
CURSO DE INTRODUCCIÓN A PYTHON 25
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
Secuencia de Escape Significado
\newline Backslash and newline ignored
\\ Backslash (\)
\' Single quote (')
\" Double quote (")
\a ASCII Bell (BEL)
\b ASCII Backspace (BS)
\f ASCII Formfeed (FF)
\n ASCII Linefeed (LF)
\r ASCII Carriage Return (CR)
\t ASCII Horizontal Tab (TAB)
\v ASCII Vertical Tab (VT)
\ooo Character with octal value ooo
\xhh Character with hex value hh
www.robotechnics.es 13
CURSO DE INTRODUCCIÓN A PYTHON 26
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
Introducción a Python
• Ejercicio: Generar fichero de texto plano con nombre: mifichero.py
Contenido del programa
# esto es una cadena
c = "Hola Mundo"
d = 'Hola Mundo'
# y esto es un entero
e = 23
# podemos comprobarlo con la función type
print (type(c))
print (type(e))
'''
Esto en un comentario multipl2
'''
input()
OJO con la identación: No se pueden dejar espacios, tabulaciones etc a la derecha. No poner
caracteres especiales ni siguiera en las líneas de comentarios
www.robotechnics.es 14
CURSO DE INTRODUCCIÓN A PYTHON 27
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
TIPOS DE DATOS: Números
– Enteros: int y long
– Reales (decimales): float
Operaciones:
www.robotechnics.es 15
CURSO DE INTRODUCCIÓN A PYTHON 28
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
TIPOS DE DATOS: Cadenas de texto
La codificación ASCII se definió en 1960 y se desarrolló para tecnologías de 8 bits.
ASCII estándar, concretamente, utiliza los 7 primeros bits para codificar la información y el número 8 es
el bit de paridad usado para controlar errores.
Con los 7 bits se diseñó un juego de 128 caracteres (en binario 2 elevado a 7), partiendo del carácter
identificado con el número 0 y terminando en el número 127.
(espacio) ! " # $ % & ' ( ) * + , . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
@ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _
` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~
Está codificación estaba pensada para el alfabeto inglés
www.robotechnics.es 16
CURSO DE INTRODUCCIÓN A PYTHON 29
TIPOS DE DATOS: Cadenas de texto ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
www.robotechnics.es 17
CURSO DE INTRODUCCIÓN A PYTHON 30
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
TIPOS DE DATOS: Cadenas de texto
A lo largo del tiempo surgieron otras codificaciones hasta que la globalización y la necesidad de
intercambio de información en distintos sistemas y en diferentes idiomas hizo concentrar esfuerzos en
el desarrollo de un proyecto universal de codificación llamado Unicode.
"Unicode es un estándar de codificación de caracteres diseñado para facilitar el tratamiento de textos
de múltiples lenguajes, incluido los basados en ideogramas o aquellos usados en textos de lenguas
muertas. El término Unicode proviene de los objetivos perseguidos durante el desarrollo del proyecto:
universalidad, uniformidad y unicidad".
En Unicode los caracteres alfabéticos, los ideogramas y los símbolos se tratan de forma equivalente y
se pueden mezclar entre sí en un mismo texto, es decir, es posible representar en un mismo párrafo
caracteres del alfabeto árabe, cirílico, latino, ideogramas japoneses y símbolos musicales.
Para hacernos una idea del volumen de caracteres que es capaz de representar Unicode, señalar que
su versión 5.1 contiene más de 100.000.
www.robotechnics.es 18
CURSO DE INTRODUCCIÓN A PYTHON 31
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
TIPOS DE DATOS: Cadenas de texto. MÉTODOS DISPONIBLES
>>> print('ACME', 50, 91.5)
ACME 50 91.5
>>> print('ACME', 50, 91.5, sep=',')
ACME,50,91.5
>>> print('ACME', 50, 91.5, sep=',', end='!!\n')
ACME,50,91.5!!
>>>
www.robotechnics.es 19
CURSO DE INTRODUCCIÓN A PYTHON 32
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
TIPOS DE DATOS: Cadenas de texto
Concatenación
a = "uno"
b = "dos"
c = a + b # c es "unodos"
print(c)
c = a * 3 # c es "unounouno"
print(c)
''' Operaciones con variables
'''
a=14
b=12
c = a+b
print(a, "hola", b, '=', c)
www.robotechnics.es 20
CURSO DE INTRODUCCIÓN A PYTHON 33
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
TIPOS DE DATOS: Cadenas de texto
Concatenación
'''
''' Operaciones con variables y texto
'''
a=14
b=12
c = a+b
print(a+b)
print(a, "hola", b, '=', c)
print(a+ "hola"+ b+ '='+ c) → ERROR
A la hora de concatenar número y cadenas de texto, es necesario convertir números as variables
de texto:
print(str(a)+ "hola"+ str(b)+ '='+ str(c))
www.robotechnics.es 21
CURSO DE INTRODUCCIÓN A PYTHON 34
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
TIPOS DE DATOS: Boolean
True, False → OJO → primera letra siempre en mayúsculas
– Importantes en expresiones
– Realmente representan 0 y 1
Para convertir a tipo Boolean:
bool(“True”)
'''
Operaciones con boolean
'''
a=1
b=0
print ("a=", a, " b= ", b)
print ("a and b -->", a and b)
print ("a or b -->", a or b)
www.robotechnics.es 22
CURSO DE INTRODUCCIÓN A PYTHON 35
CURSO DE PYTHON
Operadores Aritméticos
www.robotechnics.es 23
CURSO DE INTRODUCCIÓN A PYTHON 36
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
TIPOS DE DATOS: Operadores de comparación
Normalmente se usan en combinación con los Boolean
OJO → a = 5 → Esto es una asignación del valor 5 a la variable a
→ a == 5 → Esto es una operación de comparación. ¿Es a igual a 5?. El resultado es un
Boolean
www.robotechnics.es 24
CURSO DE INTRODUCCIÓN A PYTHON 37
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
TIPOS DE DATOS: Operadores de incremento
''' a=23 --> 23
Operaciones con operadores de incremento a=a+1 --> 24
'''
a+=1 --> 25
a=23
print("a=23 -->", a)
a*=2 --> 50
a=a+1 a/=2 --> 25.0
print("a=a+1 -->", a) a-=1 --> 23.0
a+=1 a**=1 --> 529.0
print("a+=1 -->", a)
#a++ → ERROR
a*=2 #a=a*2
print("a*=2 -->", a)
a/=2 #a=a/2
print("a/=2 -->", a)
a-=2 #a=a-2
print("a-=1 -->", a)
a**=2 #a=a**2
print("a**=1 -->", a)
www.robotechnics.es 25
CURSO DE INTRODUCCIÓN A PYTHON 38
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
CONVERSIONES DE TIPO
a = 10
#print ("La variable a es: " + a )
print ("La variable a es: " + str(a)) # concatenamos en un string y luego
imprimimos
print ("La variable a es: ", a) # imprimimos una cadena y una variable (añade un
espacio por defecto)
b = 2.3
c = 9.7657522334
print (b, " es del tipo ", type(b))
print (c, " es del tipo ", type(c))
d= "345"
print (d+str(a)) # convertimos numero a cadena
print (int(d)+a) # convertimos cadena a numero
print (b+c)
Print (a+b)
www.robotechnics.es 26
CURSO DE INTRODUCCIÓN A PYTHON 39
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
PETICIÓN DE DATOS DEL USUARIO
'''
Peticiones de datos al usuario
'''
print ("introduce un dato")
a = input()
print(a, type(a)) # el valor introducido siempre es una cadena
e = input ("introduce un dato "+d)
print (e)
print ("introduce un dato ", input(a))
print ("El resultado es ", int(input("Valor 1: ")) + int(input("Valor 2: ")))
# probar a meter 12.4334 en la linea anterior
print ("El resultado es ", float(input("Valor 1: ")) + float(input("Valor 2: ")))
www.robotechnics.es 27
CURSO DE INTRODUCCIÓN A PYTHON 40
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
EL “PROBLEMA” DE LOS NÚMEROS CON COMA FLOTANTE
El resultado de las operaciones con números flotantes puede ser inesperado:
>>> 0.1 + 0.1 + 0.1 0.3
5.5511151231257827e17
La causa de este problema es que Python no esconde el hecho que las operaciones que involucran
numeros de punto flotante no son exactas debido a que hay un error inherente al pasar internamente
los números de la base 2 (la que usa realmente el hardware) a la base 10.
Este error ocurre con todos los lenguajes, la diferencia es que la mayoría de los lenguajes oculta este
hecho usando algún tipo de redondeo.
En Python este redondeo hay que hacerlo de manera:
>>> round(0.1 + 0.1 + 0.1 – 0.3, 1)
0.
www.robotechnics.es 28
CURSO DE INTRODUCCIÓN A PYTHON 41
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
EL “PROBLEMA” DE LOS NÚMEROS CON COMA FLOTANTE
Un ordenador no es capaz de resolver de forma continua todos los datos, sino que lo hace en forma de
escalones. A mayor número de bits, mayor es la precisión alcanzada.
En el ejemplo anterior:
>>> 0.1 + 0.1 + 0.1 0.3
5.5511151231257827e17
Es decir, para 64 bits, el error en la precisión es del orden de 10E17
Debido precisamente a ese salto en escalones en los cálculos del ordenador, su sistema de
medición de la información es el siguiente:
1 bit es la unidad mínima, y puede valer 0 o 1.
1 byte es un grupo de 8 bits.
1 kilobyte (a veces escrito como KB) es un grupo de 1024 bytes (es decir, 8192 bits o 2**10).
1 megabyte (MB) es un grupo de 1024 KB (es decir, 1048576 bytes). 1 gigabyte (GB) es un grupo de
1024 MB.
www.robotechnics.es 29
CURSO DE INTRODUCCIÓN A PYTHON 42
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
EL “PROBLEMA” DE LOS NÚMEROS CON COMA FLOTANTE
>>> from decimal import Decimal
>>> a = 4.2 >>> a = Decimal('4.2')
>>> b = 2.1 >>> b = Decimal('2.1')
>>> a + b >>> a + b
6.300000000000001 Decimal('6.3')
>>> (a + b) == 6.3 >>> print(a + b)
False 6.3
>>> >>> (a + b) == Decimal('6.3')
True
>>>
www.robotechnics.es 30
CURSO DE INTRODUCCIÓN A PYTHON 43
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
EL “PROBLEMA” DE LOS NÚMEROS CON COMA FLOTANTE
>>> from decimal import localcontext
>>> a = Decimal('1.3')
>>> b = Decimal('1.7')
>>> print(a / b)
0.7647058823529411764705882353
>>> with localcontext() as ctx:
... ctx.prec = 3
... print(a / b)
0.765
>>> with localcontext() as ctx:
... ctx.prec = 50
... print(a / b)
...
0.764705882352941176470588235294117647058823529
41176
>>>
www.robotechnics.es 31
CURSO DE INTRODUCCIÓN A PYTHON 44
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
>>> x = 1234.56789
EL “PROBLEMA” DE LOS NÚMEROS CON >>> # Two decimal places of accuracy
>>> format(x, '0.2f')
COMA FLOTANTE '1234.57'
>>> # Right justified in 10 chars, one-digit accuracy
>>> format(x, '>10.1f')
' 1234.6'
you want to use exponential notation, change >>> # Left justified
the format to an >>> format(x, '<10.1f')
case you want used for the exponential '1234.6 '
>>> # Centered
specifier. For example: >>> format(x, '^10.1f')
>>> format(x, 'e') ' 1234.6 '
'1.234568e+03' >>> # Inclusion of thousands separator
>>> format(x, '0.2E') >>> format(x, ',')
'1.23E+03' '1,234.56789'
>>> format(x, '0,.1f')
'1,234.6'
>>>
www.robotechnics.es 32
CURSO DE INTRODUCCIÓN A PYTHON 45
ESTRUCTURA Y ELEMENTOS DEL LENGUAJE
>>> from fractions import Fraction
OTROS FORMATOS >>> a = Fraction(5, 4)
>>> b = Fraction(7, 16)
>>> print(a + b)
27/16
>>> x = 1234 >>> print(a * b)
>>> bin(x) 35/64
'0b10011010010' >>> # Getting numerator/denominator
>>> oct(x) >>> c = a * b
'0o2322' >>> c.numerator
>>> hex(x) 35
>>> c.denominator
'0x4d2'
64
>>> format(x, 'b') >>> # Converting to a float
'10011010010' >>> float(c)
>>> format(x, 'o') 0.546875
'2322' >>> # Limiting the denominator of a value
>>> format(x, 'x') >>> print(c.limit_denominator(8))
'4d2' 4/7
>>> # Converting a float to a fraction
>>>
>>> x = 3.75
>>> y = Fraction(*x.as_integer_ratio())
>>> y
Fraction(15, 4)
www.robotechnics.es 33
CURSO DE INTRODUCCIÓN A PYTHON 46
34
35
36
37