2. Tipos de datos, e/s y operaciones básicas¶
PEP 8 – Style Guide for Python Code¶
Define una serie de convenciones para codificar en python.
https://peps.python.org/pep-0008/
Hola mundo¶
print("¡Hola, Mundo!")
Funciones¶
Una funcion es un conjunto de instrucciones independiente al que podemos invocar para realizar un trabajo. Una función es una parte separada del codigo que puede causar algun efecto, evaluar un valor y devolverlo como resultado de la función.
En el caso de funciones integradas en python podemos utilizar help(funcion) para averiguar mas información sobre el uso de cada función.
help (print)
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
¿De donde provienen las funciones?¶
-
Funciones integradas (built-in) son del core
-
Nuevos complementos que agregan módulos pueden definir mas funciones
-
Escribirlas tu mismo
Argumentos¶
Las funciones pueden aceptar cualquier número de argumentos y hay funciones que no necesitan argumentos.
print() # crea una linea nueva
print (“pepe”, “Hola”, “lo que sea”)
Print Imprime con un separador por defecto de espacio en blanco. Puede cambiarse con el parametro sep
Una llamada a función siempre debe realizarse con () aunque no tenga argumentos.
La llamada también se conoce como invocación de la funcion
Las instrucciones en la misma linea se debe separar por “;” o “,”
En las funciones, los parámetros se pasan primero por posición y luego por nombre.
Los parámetros con nombre van al final, como en este (end)
print(“Mi nombre es”, “Python”, end=” “)
# Print imprime cadenas, da igual
print(2)
print(“2”)
#
print(11_111_11.99_999)
print(0o123) # A python le da igual el valor que le pasemos, lo va a representar como decimal
print(type(print))
print(type(False))
print(type(int))
print(+11_111_11.99_999) # Separador de miles (estético) en pỳthon 3.4 no va, en python 3.8 si
print(45.) # = 45.0
print(.3)
print(0x16) #octal
print(0o521) #hexadecimal
print(3e8) # 3 elevado a 8
print(3*10. **8)
print(0.00000000000000000000000007654)
constante_planck = 6.62607E-34
print("Me gusta \"Monty Python\"")
print('Me gusta "Monty Python"')
print(" \'\' ")
print('I\'m Monty Python.')
print("I'm Monty Python.")
print("""I'm Monty Python.""")
print("\\n suele ser un salto de línea \n como este")
Operaciones¶
Si alguno de los operadores es flotante, el resultado será flotante
En el caso de la division el resultado siempre es flotante.
Literales¶
Un literal se refiere a datos cuyos valores están determinados por el literal mismo.
Se utilizan literales para codificar datos y ponerlos dentro del código
print("2")
print(2)
Existe un literal especial más utilizado en Python: el literal None. Este literal es llamado un objeto de NonType (ningún tipo), y puede ser utilizado para representar la ausencia de un valor.
Números enteros y punto flotante¶
Enteros, aquellos que no tienen una parte fraccionaria.
Y números punto-flotantes (o simplemente flotantes), los cuales contienen (o son capaces de contener) una parte fraccionaría.
Separador de miles¶
Python 3.6 ha introducido el guion bajo en los literales numéricos, permitiendo colocar un guion bajo entre dígitos y después de especificadores de base para mejorar la legibilidad. Esta característica no está disponible en versiones anteriores de Python.
Por lo tanto, el número se puede escribir ya sea así: 11111111, o como sigue: 11_111_111.
Octales y hexadecimales¶
print(0o123)
print(0x123)
Codificando Flotantes¶
Una constante de física denominada "La Constante de Planck" (denotada como h), de acuerdo con los libros de texto, tiene un valor de: 6.62607 x 10-34.
Si se quisiera utilizar en un programa, se debería escribir de la siguiente manera: 6.62607E-34
Atención
El hecho de que se haya escogido una de las posibles formas de codificación de un valor flotante no significa que Python lo presentará de la misma manera. Python podría en ocasiones elegir una notación diferente. Por ejemplo, supongamos que se ha elegido utilizar la siguiente notación: 0.0000000000000000000001 Cuando se corre en Python: print(0.0000000000000000000001) Este es el resultado: 1e-22 Python siempre elige la presentación más corta del número, y esto se debe de tomar en consideración al crear literales.
Cadenas¶
"Yo soy una cadena."
las cadenas requieren comillas dobles o simples o mezcladas, se pueden sumar:
print('Me gusta "Monty Python"')
print("Me gusta \"Monty Python\"")
print('Me gusta "Monty Python"')
print ("1" + "+" + "1") # 1+1
El caracter de escape hace que el siguiente caracter sea interpretado como un literal formando parte de la cadena.
En las cadenas de Python, la barra diagonal inversa () es un carácter especial que anuncia que el siguiente carácter tiene un significado diferente, por ejemplo, \n (el carácter de nueva línea) comienza una nueva línea de salida.
Operadores de cadenas¶
El signo de + (más), al ser aplicado a dos cadenas, se convierte en un operador de concatenación:
string + string
El signo de * (asterisco), cuando es aplicado a una cadena y a un número (o a un número y cadena) se convierte en un operador de replicación.
string * number
number * string
Conversión de tipos de datos¶
str(number)
int()
float()
leg_a = float(input("Inserta la longitud del primer cateto: "))
leg_b = float(input("Inserta la longitud del segundo cateto: "))
print("La longitud de la hipotenusa es " + str((leg_a**2 + leg_b**2) ** .5))
Valores Booleanos¶
True equivale a 1 False equivale a 0
print(True > False) # True
print(True < False) # False
print(int(True)) # 1
print bool(0) # False
Puntos clave¶
-
Literales son notaciones para representar valores fijos en el código. Python tiene varios tipos de literales, es decir, un literal puede ser un número por ejemplo, 123), o una cadena (por ejemplo, "Yo soy un literal.").
-
El Sistema Binario es un sistema numérico que emplea 2 como su base. Por lo tanto, un número binario está compuesto por 0s y 1s únicamente, por ejemplo, 1010 es 10 en decimal.
-
Los sistemas de numeración Octales y Hexadecimales son similares pues emplean 8 y 16 como sus bases respectivamente. El sistema hexadecimal utiliza los números decimales más seis letras adicionales.
-
Los Enteros (o simplemente int) son uno de los tipos numéricos que soporta Python. Son números que no tienen una parte fraccionaria, por ejemplo, 256, o -1 (enteros negativos).
-
Los números Punto-Flotante (o simplemente flotantes) son otro tipo numérico que soporta Python. Son números que contienen (o son capaces de contener) una parte fraccionaria, por ejemplo, 1.27.
-
Para codificar un apóstrofe o una comilla dentro de una cadena se puede utilizar el carácter de escape, por ejemplo, 'I\'m happy.', o abrir y cerrar la cadena utilizando un conjunto de símbolos distintos al símbolo que se desea codificar, por ejemplo, "I'm happy." para codificar un apóstrofe, y 'Él dijo "Python", no "typhoon"' para codificar comillas.
-
Los Valores Booleanos son dos objetos constantes Verdadero y Falso empleados para representar valores de verdad (en contextos numéricos 1 es True, mientras que 0 es False).
Python como calculadora¶
print("*" * 50)
print("# Python como calculadora")
print("*" * 50)
print(2+2)
print("2"+"2") # 22 ya que son dos cadenas
# print("2" + 2) ; Error por diferencia de tipos
print(2+2*5)
print(2+2*5)
print(2+1/2)
print("*" * 50)
print("División, módulo y potencia")
print("*" * 50)
print(5//2) # solo devuelve la parte entera y como mínimo 1
print(5%2) # Devuelve el resto de la division o módulo
print(5**2) # 5 elevado a 2
print(2. * 3) # resultado flotante por que uno es flotante
print(7//3) # esta no devuelve flotante
print(7//3.) # esta devuelve flotante
print(5/5) # en las divisiones siempre el resultado es flotante
# print (2/0) # Se produjo una excepción: ZeroDivisionError
print("*" * 50)
print("Suma resta e indicador de signo")
print("*" * 50)
print(-4 + 4)
print(-4 + +4.)
print("*" * 50)
print("Prioridad operaciones")
print(9 % 6)
print(6 % 2)
print(9 % 6 % 2) # de izquierda a derecha
print("Excepcion con la exponenciacion")
print(2 ** 2)
print(2 ** 3)
print(2 ** 2 ** 3) # de derecha a izquierda
print (2 ** 2 ** 3) # igual a 2 ** 3 = 8 por tanto 2 e 8 = 256
print((-2 / 4), (2 / 4), (2 // 4), (-2 // 4))
print((2 % -4), (2 % 4), (2 ** 3 ** 2))
print(50 % -100)
help("keywords")
Variables¶
# tipos por asignación
var = 1
print("\U00002705",type(var),var,sep=" ==> ")
var ="pepe"
print("\U00002705",type(var),var,sep=" ==> ")
var = False
print("\U00002705",type(var),var,sep=" ==> ")
var = 1.
print("\U00002705",type(var),var,sep=" ==> ")
var = print("hola") # Devuelve el resultado de la función que es None
print("\U00002705",type(var),var,sep=" ==> ")
# https://unicode.org/Public/emoji/15.0/emoji-test.txt
# Mas unicodes
print('\N{grinning face with smiling eyes}')
print("\U0001f600")
print("\U00002705") # Reemplaza el código de unicode.org con 000's hasta los 8 dígitos
Nombrar variables¶
- El nombre de la variable debe de estar compuesto por MAYÚSCULAS, minúsculas, dígitos, y el carácter _ (guion bajo).
- El nombre de la variable debe comenzar con una letra.
- El carácter guion bajo es considerado una letra.
- Las mayúsculas y minúsculas se tratan de forma distinta (un poco diferente que en el mundo real - Alicia y ALICIA son el mismo nombre, pero en Python son dos nombres de variable distintos, subsecuentemente, son dos variables diferentes).
- El nombre de las variables no pueden ser igual a alguna de las palabras reservadas de Python (se explicará más de esto pronto).
La guia de estilo PEP8 ecomienda la siguiente convención de nomenclatura para variables y funciones en Python:
- Los nombres de las variables deben estar en minúsculas, con palabras separadas por guiones bajos para mejorar la legibilidad (por ejemplo: var, mi_variable).
- Los nombres de las funciones siguen la misma convención que los nombres
- de las variables (por ejemplo: fun, mi_función).
- También es posible usar letras mixtas (por ejemplo: miVariable), pero solo en contextos donde ese ya es el estilo predominante, para mantener la compatibilidad retroactiva con la convención adoptada.
Palabras Clave
Observa las palabras que juegan un papel muy importante en cada programa de Python. ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
Son llamadas palabras clave o (mejor dicho) palabras reservadas. Son reservadas porque no se deben utilizar como nombres: ni para variables, ni para funciones, ni para cualquier otra cosa que se desee crear.
El significado de la palabra reservada está predefinido, y no debe cambiar.
Afortunadamente, debido al hecho de que Python es sensible a mayúsculas y minúsculas, cualquiera de estas palabras se pueden modificar cambiando una o varias letras de mayúsculas a minúsculas o viceversa, creando una nueva palabra, la cual no esta reservada.
Por ejemplo - no se puede nombrar a la variable así:
import
No se puede tener una variable con ese nombre, esta prohibido, pero se puede hacer lo siguiente:
Import
Estas palabras podrían parecer un misterio ahorita, pero pronto se aprenderá acerca de su significado.
Operaciones Abreviadas¶
a = 6
b = 3
a /= 2 * b
print(a) # 1.0 ya que la división siempre devuelve flotantes y el operador * se ejecuta antes del /=
a = 6
b = 3
a = a / 2 * b
print(a) # 9.0 ya que la división siempre devuelve flotantes y el operador / se ejecuta antes de *
print ("Esto sucede por el orden de evaluacion de los operadores, /= abreviado se evalua en orden distinto")
Puntos clave operadores¶
-
Una expresión es una combinación de valores (o variables, operadores, llamadas a funciones) las cuales son evaluadas y dan como resultado un valor, por ejemplo, 1 + 2.
-
Los operadores son símbolos especiales o palabras clave que son capaces de operar en los valores y realizar operaciones matemáticas, por ejemplo, el
*
multiplica dos valores:x * y
-
Los operadores aritméticos en Python:
-
+
(suma),-
(resta) *
(multiplicación),/
(división clásica: regresa un flotante siempre),%
(módulo: divide el operando izquierdo entre el operando derecho y regresa el residuo de la operación, por ejemplo, 5 % 2 = 1),**
(exponenciación: el operando izquierdo se eleva a la potencia del operando derecho, por ejemplo,2 ** 3 = 2 * 2 * 2 = 8
),//
(división entera: retorna el número resultado de la división, pero redondeado al número entero inferior más cercano, por ejemplo,3 // 2.0 = 1.0
).- Un operador unario es un operador con solo un operando, por ejemplo,
-1
, o+3
. - Un operador binario es un operador con dos operandos, por ejemplo,
4 + 5
, o12 % 5
. - Algunos operadores actúan antes que otros, a esto se le llama - jerarquía de prioridades: Unario + y - tienen la prioridad más alta. Después: **, después: *, /, y %, y después la prioridad más baja: binaria + y -.
- Las sub-expresiones dentro de paréntesis siempre se calculan primero, por ejemplo,
15 - 1 * ( 5 *( 1 + 2 ) ) = 0
- Los operadores de exponenciación utilizan enlazado del lado derecho, por ejemplo,
2 ** 2 ** 3 = 256
Comentarios¶
# Comentarios
# con almohadillas
# en diferentes lineas
"""
Texto de comentarios, pero internamente es un string, podria detener
la ejecucion durante el debug.
"""
print ("Hola") # comentario en linea
Interpolar variables sobre cadenas de caracteres¶
1 2 3 4 5 6 7 |
|
La función input()¶
La función input() es capaz de leer datos que fueron introducidos por el usuario y pasar esos datos al programa en ejecución.
1 2 3 |
|
1 2 |
|
El resultado de la función input() es una cadena.
1 2 3 |
|