Saltar a contenido

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, o 12 % 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
texto_formato = 'La versión mas reciente de {lenguaje} hoy {fecha} es {version}'

lenguaje = 'Python'
fecha = '2020/12/26'
version = '3.9.1'

print(texto_formato.format(lenguaje=lenguaje,fecha=fecha,version=version))

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
print("Dime algo...")
anything = input()
print("Mmm...", anything, "...¿en serio?")
1
2
anything = input("Dime algo...")
print("Mmm...", anything, "...¿En serio?")

El resultado de la función input() es una cadena.

1
2
3
anything = float(input("Inserta un número: "))
something = anything ** 2.0
print(anything, "al cuadrado es", something)

Última actualización: 2022-10-22