+ Números:
--------------
En python podemos trabajar con Enteros, Reales y Complejos; pueden ser representados en decimal, octal y hexadecimal.
Como vimos en la parte anterior y entendemos el tipado dinámico esta tarea se vuelve muy simple y python se encarga
de hacer la asignación correspondiente:
>>> entero = 7
>>> entero1 = -7
>>> real = 13.37
En los complejos solo hay que indicar cual es la parte imaginaria con una " j " puede ser mayúscula o minúscula por igual:>>> complejo = 13 + 37J
>>> complejo1 = 13j + 37
De igual forma son correctas las dos asignaciones anteriores y el orden no es de importancia mientras se indique "j".Ahora, con respecto a int y long en Python 3 esto cambia y se integran tan solo en int.
Los valores que pueden tomar los números reales en python es muy grande ya que se utiliza 1 bit para el signo(-, +),
11 para el exponente y 52 para la mantisa y tomar en cuenta que el tipo double de C es equivalente a los reales en python.
También podemos utilizar notación científica en python de una forma simple.
Ej: 1.3*10-13 (a la menos 13)
>>> real2 = 1.3e-13
Si se necesita trabajar con numero reales de cierta precisión, dos cifras decimales o 4, basta con importar Decimal que es de la librería básica de Python, además de contar con una serie de funciones nos permite crea por ejemplo:
un número real con precisión (decimal) a través de una variable float.
Con respecto a los booleanos, Python cuenta con el tipo boolean integrado pero no es mas que una versión personalizada de int.
+ Sistema De Representación:
------------------------------
Python permite representar los números enteros en octal, decimal, binario y hexadecimal.
Para representar un numero en binario basta con utilizar " 0b " y el valor en binario del carácter.
Por ejemplo expresar el entero 10 en binario:
>>> binario = 0b1010
O podemos utilizar una función misma que nos ofrecen para este tipo de datos:>>> bin(10)
Ahora con respecto a Octal, es casi lo mismo solo que se tiene que anteponer " 0o " seguido del numero.Ej: Expresa el entero 65 en octal:
>>> octal = 0o101
>>> oct(65)
Y con este deben estar familiarizados y sigue el mismo principio que los anteriores, para expresar un hexadecimal basta conanteponer " 0x " seguido del numero.
Ej: Expresar el numero 1337 en hexadecimal.
>>> hexad = 0x539
>>> hex(1337)
No obstante estas funciones acepta cualquier valor numérico como argumento, y así convertir de un tipo directo a otro:Ej: Convertir una cantidad hexadecimal en binario:
>>> bin(0x539)
'0b10100111001'
+ HELP
---------
Bueno retomare lo anterior para enseñar un viejo truco y me entienda por que python te ayuda a ser autodidacta.
Supongamos que sabemos que existe el metodo hex() pero no sabemos como utilizarlo, por que el inepto que escribe
este texto se le paso por alto.
Bueno esto tiene una solución simple y es utilizar help().
Cualquier cosa que le pasemos como argumento a help nos regresara la información de ayuda propia de python.
Ej:
>>> help(hex)
Help on built-in function hex in module builtins:
hex(...)
hex(number) -> string
Return the hexadecimal representation of an integer.
Y con esto creo que sobra explicar bastantes cosas, solo recuerden que pueden aplicarlo a cualquier cosa que desen. Si lo aplicamos a algún modulo que importamos, nos regresara documentación del mismo -- si es que la tiene--
y nos indicara las funciones que este alberga y su fomar de implementacion o uso.
+ Operadores:
------------------------
Como cualquier otro lenguaje de programacion y por obvias y sobradas razones, contamos con operadores para tratar
numeros. Con referente a la Aritmetica, Python nos brinda la suma básica, dimisión entre y real, multiplicación y resta.
Referente a operaciones a bajo nivel y a nivel bits contamos con operaciones como: NOT, XOR, NOR y AND. Python tambien
brinda operadores para comprobar la igualdad o desigualdad y para llevar acabo operaciones logicas como AND y OR.
Tambien en Python se implementa la precedencia de operadores y debe tener en cuenta al escribir expresiones y no olvidar
que se pueden utilizar parentesis para marcar la diferencia entre una operacion y otra dentro de la misma expresion.
Les dejo la tablita con lso principales operadores y operaciones:
Código: Seleccionar todo
Expresión con operador Operación
____________________________
|a + b | suma
|a - b | resta
|a * b | multiplicación
|a % b | resto
|a / b | división real
|a // b | división entera
|a ** b | potencia
|a | b | OR (bit)
|a ^ b | XOR (bit)
|a & b | AND(bit)
|a == b | Igualdad
|a != b | Desigualdad
|a or b | OR (lógico)
|a and b| AND(lógico)
|not a | Negación(lógico)
---------------------------------
------------------------
Python también permite hacer operaciones mas complejas con los números algunas de ellas: valor absoluto, raíz cuadrada, máximos
y mínimos o redondear un valor real, también nos permite trabajar con operaciones trigonométricas como el seno, coseno, tangente,
cotangente y para esto tenemos un modulo llamado math y si deseamos utilizarlo es tan simple como:
>>> import math
Y si queremos sacar la raiz cuadrada de 81, tan simple que ni debería enseñarlo:>>> math.sqrt(81.0)
9.0
Adelantando un poco, podríamos asignar a una variable esto anterior y ahorra tiempo con escribir todo el math.sqrt(), de esta forma:>>> rcuadrada = math.sqrt
>>> rcuadrada(81)
9.0
Creo que me estoy dando a entender bastante bien y los que la pillaron bien y los que no, poco a poco iran entendiendo.De igual forma recuerden:
>>> help(math)
También no podre profundizar en muchos temas como este, por eso requiero que el lector adquiera cierta habilidad para intuir, ya queademás de darle las herramientas y enseñarle como, estos textos son una guia muy básica para los que no se orientan.
Si alguien, después de leer los texto tiene interés en profundizar en el lenguaje puede consultar lecturas mas robustas y llegar
con un amplio panorama a profundizarse sin problema. : )
+ Conjuntos:
---------------
Python tambien permite manejar conjuntos y para esto tenemos la función set() y acepta una serie de argumentos separados por comas
" , ". Por ejemplo si queremos crear un conjunto que contenga estos dígitos 1, 2, 3 bastaría con usar set():
>>> conjunto1 = set('123')
>>> conjunto1
{'1', '2', '3'}
También podemos definir un conjunto con ' { } ' y separando con comas los elementos:>>> conjunto2 = {5,6,7}
>>> conjunto2
{5 ,6 , 7}
Como abran notado set(), regresa un conjunto pero a diferencia de la asignación directa nos regresa un conjunto de stringsy con asignación directa nos regresa regresa el conjunto con ints, tener cuidado con esto ;)
>>> conjunto1 = {1,2,3}
Ahora podemos utilizar algunos métodos que nos brinda esta clase como add() o remove() para agregar o eliminar elementos de nuestroconjunto. También cabe mencionar que si se trata de agregar con set() algun elemento repetido sera eliminado automaticamente:
>>> conjunto3 = set('1335943')
>>> conjunto 3
{'1', '9', '3', '5', '4'}
Como se nota, el tercer elemento y el ultimo son omitidos ya que son los 3's repetidos.+ Cadenas De Texto:
--------------------------
Bueno creo que los strings es lo mas utilizado en un programa o de lo mas utilizado, Python nos brinda una extensa lista de funciones
para poder tratar a los strings. A diferencia de algunos lenguajes como C que los strings no son un tipo de dato integrado en el lenaguje
como tal, en Python si ahorra mucho tiempo y lineas.
Python trata a los strings como un conjunto inmutable y ordenado de caracteres; para definir un string podemos utilizar comillas dobles
" " o comillas simples '':
>>> nombre = 'julianstafari'
>>> nombre
'julianstafar'
o podemos hacer >>> nombre = "julianstafari"
>>> nombre
'julianstafari'
Y como en todo lenguaje podemos agregar comentarios o utilizar esto para strings que ocupen mas de una linea. El primero de estoslo podemos hacer anteponiendo el carácter "#" antes del comentario.
>>> hola = "hello world" #hola mundo
Creo que sobra explicar, el segundo lo hacemos usando comillas dobles " tres veces seguidas, para que python interprete que todo los caracteresy saltos de linea van incluidos en el string:
>>> print(hola) """mi primer hola
mundo en
Python 3.2"""
+ Tipos:-----------
En Python3 todas las cadenas strings (texto) son Unicode y en Python3 son incluidas 3:
-Unicode
-Byte
-Bytearray
El tipo byte solo permite caracteres en calificación ASCII y de igual forma que Unicode son inmutables, en comparación con bytearray
que es una versión mutable de byte.
Para declarar un string de tipo byte, basta con anteponer una b de la siguiente forma:
>>> hola = b"Hello world!"
>>> type(hola)
<class 'bytes'>
Con respecto a bytearray, para declara un string de este tipo tendremos que hacerlo con una función que brinda Python que toma dos argumentos:el primero es el string en concreto y el segundo es la codificación que se utilizara:
>>> hola1 = bytearray("México", "utf16")
>>> print(hola1)
bytearray(b'\xff\xfeM\x00\xe9\x00x\x00i\x00c\x00o\x00')
Las cadenas de texto que solemos utilizar comúnmente Python les asigna por default el tipo 'str' y se pude comprobar conla función que hemos estado usando type():
>>> saludo = "Hello world!"
>>> type(saludo)
<class 'str'>
Y para tratar el tema de la conversión entre distintos tipos de strings tenemos varias funciones, de las mas importantes tenemos aencode() y decode().
Donde endode() nos sirve para convertir un 'str' a 'byte':
>>> saludo.encode()
b'Hello world!'
Y decode() es lo inverso a la anterior, de 'bye' a 'str':>>> saludo = b"hola"
>>> saludo.decode()
'hola'
Si queremos comprobar podemos pasarle a la función type() como parámetro nuestra conversión ;) :>>> type(saludo.decode())
<class 'str'>
+ Principales Funciones y Métodos:------------------------------------------------
Bueno ya un poco mas claro el panorama de los strings, es bueno saber que Python nos ofrece distintas Funciones y Métodos para tratar a estos,
tanto si se llaman de incoo o si ya tenemos definido un string y enseñare algunas de las mas comunes que suelen utilizar en Python.
Si por ejemplo queremos contar cuantos caracteres tiene un string usaremos la función len():
>>> nombre = 'julianstafari'
>>> len(nombre)
13
Ahora un función de las mas importantes y que se invoca sin necesidad de tener un string definido es print() y su uso es simple.Regresa como resultado el string que se pidió este o no definido:
>>> print('no definido')
no definido
>>> print(nombre)
julianstafari
Si notaron, cuando tenemos un string definido no necesitamos poner las comillas y esto es por que a la función print(), le estamos pasando
además de recibir otro tipo de datos, nos permite pasar directamente un string "crudo" sin estar definido.
Python pone a disposición muchos métodos mas, por ejemplo find() nos permite buscar un o un conjunto de caracteres dentro de un 'str':
>>> comunidad = 'greydotsec'
>>> comunidad.find("g")
0
>>> comunidad.find("yd")
3
Bueno, si prestaron atención se darán cuenta que en el primer ejemplo nos regresa 0 y es por que en Python se cuenta comenzando por el0 y no por el uno, si pedimos el ultimo carácter del string veremos que se comprueba esto:
>>> comunidad.find("c")
9
>>> len(comunidad)
10
A pesar de que 'greydotsec' contiene 10 caracteres. El segundo ejemplo nos regresa 3 por que es la posición del primer carácter que encontróen el string osea "y".
Código: Seleccionar todo
g r e y d o t s e c
0 1 2 3 4 5 6 7 8 9
>>> comunidad.find("z")
-1
Si queremos remplazar algún carácter del string entra en juego la función repace() y toma dos argumento: primer el string que sera reemplazadosegundo el string que reemplazara al primer argumento:
>>> comunidad.replace("grey", "Grey")
'Greydotsec'
Ahora muchos comenten el error de creer que el string comunidad ahora esta modificado y no es así, esto se debe a que replace no cambia el contenidode comunidad, sino que crea una copia y si se desea guardar el contenido que resulta tan solo debe asignarse un nombre:
>>> resultado = comunidad.replace("grey", "GREY")
>>> print(resultado)
GREYdotsec
Los métodos strip(), lstrip(), rstrip() nos ayudan con el problema de los espacios en blanco solo que lstrip quita los de la izquierda, rstrip()quita los de la derecha, mientras strip() quita ambos:
>>> frase = " Greydot flipa "
>>> frase.strip()
'Greydot flipa'
>>> frase.lstrip()
'Greydot flipa '
>>> frase.rstrip()
' Greydot flipa'
En el caso de upper() y lower() nos ayudan a cambiar todos los caracteres a mayúscula y minúscula, mientras que capitalize() nos pone lamayúscula del inicio:
>>> web = 'inDetectables.net'
>>> web.upper()
'INDETECTABLES.NET'
>>> web.lower()
'indetectables.net'
>>> web.capitalize()
'Indetectables.net'
La metodo split() nos permite dividir una cadena apartir del argumento que se le de y el argumento es el caracter que se tomara comoreferencia para separa el string, y a cambio nos regresa un conjunto con el string divido:
>>> web = 'www.indetectables.net'
>>> web.split('.')
['www', 'indetectables', 'net']
El metodo join(), pide un argumento y es la string que sera reemplazada con el string que se indico al llamar al método:>>> ';'.join(web)
'w;w;w;.;i;n;d;e;t;e;c;t;a;b;l;e;s;.;n;e;t'
Espero el texto sea de su agrado y creo que por este texto es suficiente.Tomaremos un descanso antes de seguir con los demás textos, pueden practicar y repasar lo visto! ;)
[Enlace externo eliminado para invitados]
@GreyDotSec
@julianstafari