Semana_01 - Elementos basicos en Python
Semana_01 - Elementos basicos en Python
Informacion:
Index TIOBE: https://www.tiobe.com/tiobe-index/
PYPL: PopularitY of Programming Language: http://pypl.github.io/PYPL.html
Recursos:
Anaconda Distribution: https://www.anaconda.com/download
REPLIT Python Online Compiler: https://replit.com/languages/online-python-compiler
Lenguajes de programacion
Todos los lenguajes de programación realizan las mismas tareas, en términos generales,
utilizando diferentes instrucciones o construcciones de código.
Entrada / Salida
file:///C:/Users/Asus/Downloads/Semana_01 - Elementos basicos en Python (2).html 1/15
19/3/24, 15:35 Semana_01 - Elementos basicos en Python
PS C:\Users\Asus\OneDrive\Escritorio\ProgComp2024_0\Material de
clase\Sesion 01> python
Python 3.10.9 | packaged by Anaconda, Inc. | (main, Mar 1 2023,
18:18:15) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more
information.
>>> print("Hola Mundo!")
Hola Mundo!
>>>
Nota: Esto último solo funcionará si Python es parte del PATH del sistema. Al momento de
instalar la distribución de Python debe de indicar que desea agregar Python en el PATH del
sistema. De lo contrario, deberá ejecutar lo anterior en un terminal preparado especialmente
configurado para llamar a Python, como Anaconda Promp(Windows Key + R -> "Anaconda
Prompt")
PS C:\Users\Asus\OneDrive\Escritorio\ProgComp2024_0\Material de
clase\Sesion 01> ipython
Python 3.10.9 | packaged by Anaconda, Inc. | (main, Mar 1 2023,
18:18:15) [MSC v.1916 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.10.0 -- An enhanced Interactive Python. Type '?' for
help.
Observe que la celda 1 no tiene una celda de salida porque la instrucción ejecutada en esta
es una impresión. En cambio, en la celda 2 se tiene un operación aritmética que retorna un
valor de salida, por lo que se muestra en una celda de salida.
NOTA: Igual que en el caso anterior, esto último solo funcionará si Python es parte del PATH
del sistema.
Jupyter Notebook
Si se traslada el ambiente de ipython a un ambiente de tecnología web, lo que se tiene es un
Jupyter Notebook. Estos son documentos interactivos que combinan celdas con texto en
formato Markdown y codigo Python (y con algunas técnicas especiales, HTML, JavaScript,
Bash Scripts e instrucciones del sistema). El tipo de celda puede modificarse en la barra de
tareas (Code -> Markdown). Para ejecutar una celda debe de presionar la combinación de
teclas Ctrl + ENTER . Seleccione la celda inferior y haga Ctrl + ENTER
Puede modificar una celda de código y probar los cambios. Pruebe agregar un texto entre ""
como argumento de la funcion predefinida (BIF: Built In Function) de Python print
Cualquier cosa
Ahora que ya sabe como ejecutar un código Python en una celda de código y como
modificar su contenido, empecemos con lecciones de Programación en Python.
- Spyder
- PyCharm
- Thonny
En esta curso, las herramientas soportadas para el desarrollo de los materiales del curso son:
Para la instalación de los recursos del curso, revise las instrucciones dadas en clase, así como
los links con los recursos.
Los primero que debemos de saber es cómo se comenta un programa en Python. Para
comentar una linea en un código Python se utiliza el caracter #
In [4]: '''
Este es un bloque de comentario de varias lineas
In [5]: print('A los José se les llama Pépe, lo que es ejemplo deun "hipocorístico"')
Note que en los casos anteriores si una cadena inicia con "" , debe terminar con "" , y los
mismo para '' . Esto permite utilizar las comillas en un str en caso sea necesario.
Por otro lado, print() es un ejemplo de un BIF: una funcion pre-definida en Python (Built
In Function). La función print() imprime un str y permite observar los resultados de
una operación.
print() y keywords
Note el retorno de la función print() :
In [7]: print(1, 2, 3, 4, 5)
1 2 3 4 5
Cada uno de los argumentos de print() se imprimen por separado, ya que el separador
de argumentos , se reemplaza por un espacio en blanco ' '. Esto esta definido en la misma
función como un argumento asociado a una palabra clave o keyword, el keyword sep .
Puede verificar esto consultando en la ayuda de la función print()
In [8]: print?
Como puede observar en la ayuda, el keyword sep=' ' indica que el separador de
argumentos será reemplazado por un espacio en blanco. Este separador puede modificarse
para que sea reemplazado por otro caracter. Por ejemplo:
1->2->3->4->5
Vuelva a consultar la ayuda de print() . Observe otro keyword de la funcion: end . Por
defecto, tiene el valor end=\n . Esto quiere decir que una vez que ha terminado con la
impresión, agrega al final el caracter de escape \n que significa nueva linea, es decir que
cada llamada de la función print() imprime una linea independiente:
In [10]: print("Hola")
print("mundo")
Hola
mundo
Hola mundo
Python soporta los caracteres de escape estándar (definidos en C). Entre estos se pueden
listar los siguientes
Hola
munda
Palabras reservadas
Como todo lenguaje de progrmamación, Python tiene ciertas palabras reservadas que
forman parte del léxico estándar del lenguaje de programación. Estas palabras tienen un uso
específico y no podran ser utilizadas como nombres de variables o nombres de archivos.
Operaciones aritméticas
Python soporta 7 operaciones aritméticas:
2 + 3 = 7
3 - 6 = -3
4 X 3 = 12
3 / 2 = 1.5
3 // 2 = 1
3 ** 2 = 9
3 % 2 = 1
Existe un orden de precedencia al momento de realizar las operaciones que sigue las reglas
matemáticas (siempre de izquierda a derecha en el caso del mismo orden de precedencia):
1. ( )
2. **
3. %, *, /
4. +, -
In [10]: 1 + 2 * 2 ** (6 - 3) % 12
5
Out[10]:
Tipos de datos
Note los resultados de las siguientes operaciones y considere sus resultados:
In [11]: 2 ** (6 - 3)
8
Out[11]:
In [14]: 2 ** (6 - 3) / 2
4.0
Out[14]:
En ambas celdas de ejecución lo que se obtiene son valores enteros, pero en la segunda
celda se observa que, aunque no tiene un valor decinal significativo, se muestra el valor
4.0 en lugar de 4 . Esto es porque en la primera celda se estan realizando operaciones
que retornan valores enteros (int), mientras que la división real retorna un valor real (float).
Esto es una manifestación de que Python soporta tipos de datos y estos estan asociados
tanto a la asignación de variables, como a las operaciones sobre estos valores o variables.
Python soporta tipado dinámico, esto es que el tipo de datos de una variable puede
reasignarse. Esto permite que se pueda desarrollar código muy rápido, ya que no hay que
preocuparse por la asignación inicial del tipo de una variable y esta puede cambiar en
ejecución (que esto último suceda no significa, en terminos generales, que sea una buena
idea...).
In [16]: a = 10
print(a)
a = "Hola mundo"
print(a)
10
Hola mundo
In [17]: print(type(3))
print(type(1.5))
print(type("a"))
<class 'int'>
<class 'float'>
<class 'str'>
<class 'str'>
<class 'str'>
<class 'complex'>
<class 'bool'>
<class 'bool'>
<class 'bool'>
Python soporta estructuras de datos nativas que permiten almacenar una colección de
valores bajo una sola variable (realmente, bajo un solo objeto):
<class 'tuple'>
<class 'list'>
<class 'set'>
<class 'dict'>
Otra función útil en Python asociada a los tipos de datos en isinstance() . Este es un
ejemplo de una función que requiere mas de un parametro de entrada, ya que se debe
especificar el valor a evaluar asi como el tipo de datos sobre el que se quiere consultar si
corresponde. Esta funcion retornará un resultado booleano, ya que pregunta si un dato o
variable es de un tipo especificado:
3 es int?: True
3.0 es int?: False
3.0 es float?: True
True es int?; True
True es bool?: True
'Hola' es str?: True
'' es un str?: True
10 > 3: True
5 <= 5: True
12 != 10: True
12 > 33/3: True
'a' < 'b': True
'A' < 'a' True
12 < 15 < 20: True
20 > 15 > 10 True
Con respecto a las operaciones lógicas, se soportan los operadores lógicos estándar:
In [21]: 0 & 1 | 1 != 1
False
Out[21]:
Pero Python es un lenguaje que se soporta sobre un concepto clave: la claridad y la belleza.
Un código escrito en Python debe de ser claro, limpio, legible, oprenado. El código
anterior se puede volver a escribir de la siguiente forma:
False
Out[22]:
Y por supuesto, todas las operaciones de Python (aritméticas, de relación y lógicas) tienen
un orden de precedencia completo como se muestra en la siguiente tabla:
Operators Meaning
() Parentheses
** Exponent
+ , - Addition, Subtraction
^ Bitwise XOR
| Bitwise OR
or Logical OR
Asignación de variables
En Python el operador = permite asignar valores a variables. Como en todo lenguaje de
programación, se preferible operar con variables que hacerlo directamente con números:
In [23]: var = 3
result = var * 5
print(result)
15
Note que en Python las variable son case sensitive, esto es que consideran las letras
mayusculas y minusculas de forma diferenciada:
In [24]: var = 10
Var = 20
VAR = 30
print(var, Var,VAR)
10 20 30
Asi también, una variable no puede tener espacios en blanco (utilizar _ ), ni palabras
reservadas ni tener un número como caracter inicial:
Según las reglas de sintáxis de Python (PEP-8), las variables se escriben en minúsculas,
utilizando el caracter _ para los espacios en blanco y se sugiere utilizar nombres
representativos:
¿Algo salió mal? ¿El resultado es el esperado? De que tipo es el dato que retorna la función
input() :
Las operaciones aritméticas calculan los resultados esperados entre valores numéricos (por
ejemplo, un int con un int , o un int con un float ). Sin embargo, si se utiliza el
operador * entre variables del tipo int y str se produce la repetición del str tantas
veces como indique el valor int . Asi también, el operador + entre dos str realiza una
concatenación:
Zzzzzzzzzzz...
Esto es que , hay que tener un conocimiento de como los diferentes operadores interactuan
con los diferentes tipos de datos para retornar resultados.
Si se quiere asignar un valor entero a partir de un str obtenido por medio de la función
input() debe de realizarse una conversión de tipo de datos, o un typecast. Esto en Python
se realiza de la siguiente forma:
- int(val)
- float(val)
- str(val)
La asignación del tipo de datos se puede hacer de dos maneras: operación sobre una
variable, o asociando el retorno de una función como entrada de una segunda función:
In [32]: # Se toma el resultado de la función input() y se modifica el tipo de datos con int
num = int(input("Ingrese un numero a triplicar: "))
result = num * 3
print("El valor triplicado es ")
print(result)
Y recuerde que se puede utilizar el operador + entre str para concatenar cadenas:
In [35]: print(1 / 3)
0.3333333333333333
str.method()
Así, es una operación que afecta a este str específico. Todos los tipos de datos tienen
métodos asociados. Por ejemplo, un número complejo tiene un método para obtener el
"conjugado":
In [3]: z = 10 + 3j
print("z =", z)
print("Conjugado:", z.conjugate())
z = (10+3j)
Conjugado: (10-3j)
10 + 20 = 30
In [37]: peso = 82
altura = 1.72
imc = 28.393726338561386
print("{} / {:.2f} ^2 = {:.2f}".format(peso, altura, imc))
82 / 1.72 ^2 = 28.39
Así también, se puede especificar el dato que va en cada uno de los placeholders:
Elvio Lado y Dina Mita forman un equipo liderado por Elvio Lado
Esta característica puede ser de mucha utilidad para repetir valores en varias líneas:
2 x 1 = 2
2 x 2 = 4
In [46]: print()
print("{:>40}".format("Fecha: 28/2/2024")) # Justificado a la der
print()
print("{:^40}".format("ALUMNOS MATRICULADOS")) # Centrado en un campo
print("{:^40}".format("===================="))
print()
print("{:^20} {:^20}".format("NOMBRE", "CODIGO"))
print("{:^20} {:^20}".format("------", "------"))
print("{:.<30}{}".format("Armando Paredes ", " a20177676")) # Justificado a la iz
print("{:.<30}{}".format("Elmer Curio ", " a20177676"))
ALUMNOS MATRICULADOS
====================
NOMBRE CODIGO
------ ------
Armando Paredes .............. a20177676
Elmer Curio .................. a20177676
Uso de f-strings
A partir de Python 3.6 se puede utilizar una forma más abreviada de controlar el formato de
visualización con un f-string :
Paciente: Elvio
===============
IMC: 82 / 1.72 ^2 = 28.39
Esta es la opción que se utiliza cada vez con mayor frecuencia por parte de la comunidad de
programadores de Python. En este curso utilizaremos de forma indistinta el método format
y los f-string dependiendo de cual resulte más conveniente.
Dos
palabras
Esto se puede combinar con el ingreso interactivo de datos para obtener varios datos en
una sola consulta:
El caracter que se utiliza como separador es el espacio en blanco, pero se puede especificar
un caracter de separación diferente como argumento del método split() :
Hay que notar que se tiene que tener cuidado al momento de realizar un typecast al utilizar
el método split() pues los cambios de tipos de variables se deben realizar sobre cada
uno de los datos de forma independiente:
4 + 2 = 42