Você está na página 1de 56

02Tiposdedatosescalaresen

Python3
DiegoAndrsAlvarezMarn
ProfesorAsociado
UniversidadNacionaldeColombia
SedeManizales

ComentariosenPython
LoscomentariosenPythonempiezanconel
carcter#

Variables
Una variable es un nombre o referencia a un
valorguardadodelamemoriadelsistema
EnPythonnoesnecesariodeclararlasvariables
al principio del programa (esto es necesario en
lenguajes como C, C++, Pascal, Visual Basic).
Las variables se declaran automticamente
cuandoselesasignaunvalorporprimeravez.Su
tipocorresponderaltipodedatoquecontienen.

Reglasparalacreacindeidentificadoreso
nombresdevariables,funciones,etc.

Los nombres dados a las referencias de objetos se llaman identificadores o


simplementenombres

LosnombresvlidosenPythonpuedentenercualquierlongitud.

Elprimercarcter,debeserunaletra(UNICODE),oelguinbajo_

Los caracteres siguientes pueden ser tambin nmeros (UNICODE), por ejemplo:
'0' ... '9'. Es decir area2, area_2, rea2, _area2 son un identificadores vlidos;
2area,reamedia(conelespaciointermedio),area.media,a(b)noloson.
Python es casesentitive: Arbol, ARBOL, arbol, ArBoL y rbol son todos nombres
diferentes
SerecomiendanoutilizarlosnombresyautilizadosporPython,ejemplo:int,float,
list,tuple,len,str,etc.
Unnombrevlidonopuedeserunadelaspalabrasclaves(keywords)dePython.

Nuncautilicelaeleolaminsculacomonombredevariable,yaquesepuede
confundir con un uno o con un cero, respectivamente: 1230 vs l2O, 1230 vs
l23O, 1230 vs l23O

PalabrasreservadasdePython3

Nota: las palabras clave no se


pueden
utilizar
como
identificadores. Se deben escribir
exactamentecomoselistanaqu.

Tiposdedatos
Los tipos de datos determinan el conjunto de valores que un objeto puede
tomarylasoperacionesquesepuedenrealizarconellas.
Tiposdedatosescalares:

Tiposdedatossecuenciales:

Secuenciasdebytes,cadenas

Tiposdedatosestructurados:

Listas(lists):secuenciasordenadasdevalores

Tuplas(tuples):secuenciasinmutablesdevaloresordenados

Conjuntos(sets):conjuntonoordenadodevalores

Diccionarios (dictionaries): conjunto no ordenado de valores, que tienen una llave


quelosidentifican

Objetos: mdulos, funciones, clases, mtodos, archivos, cdigo compilado,


etc.

Nmerosenteros,flotantes,complejos,fraccionarios,lgicos(booleanos)

Constantes

Nmeros

Enteros(int):puedenserarbitrariamentelargos,esdecir
nohaylmitesMIN_INToMAX_INTcomoenlenguajeC.
Sutamaoestlimitadoporlamemoriadelcomputador.

Base10:

1,2

Base2:

0b101110110, 0B001001001110

Base8:

0o232573, 0O17321577

Base16:

0x23AF57BA, 0XFF23AB3C

Flotantes(doubleenlenguajeC):1.2,7.43e4,1.2E3,1.0

Nmeroscomplejos:7+3j,32+4J

Fracciones(fraction):1/21,2/423

Decimales(decimal):Decimal('0.2')

Enterosvs.Flotantes

Nmerosflotantes

Secodificanenmemoriautilizandoelestndar
IEEEStandard754forfloatingpointarithmetic:
http://en.wikipedia.org/wiki/IEEE_floating_point

Poseenunaprecisinde64bits.

Tienen15dgitosdeprecisin

EselmismodoubledelenguajeC,C++

Como una curiosidad, el IEEE standard 754, permite los llamados


nmerossubnormales(odenormales),loscualessonnmerosincluso
ms
pequeos
que
sys.float_info.min.

Ver:
http://en.wikipedia.org/wiki/Denormal_number. Todo depende del
procesador de su PC. Estos nmeros estn en el intervalo entre
sys.float_info.min*sys.float_info.epsilon
y
sys.float_info.minesdecir4.9407e324.Cualquiernmeroms
pequeoqueesteseredondeaacero.Tengaencuenta,queestono
tiene
importancia prctica alguna en sus clculos. Adems hay una

prdidadeprecisinasociadaasuuso.

sys.float_info.epsilon representa el nmero ms pequeo posible


quepuedesumrselea1.0paraque(1.0+sys.float_info.epsilon)>
1.0. En MATLAB esta constante se llama "eps".
sys.float_info.epsilon representa la exactitud relativa de la
aritmticadelcomputador.Observequeundoubletiene52bitsensu
parte de fraccin, por lo que sys.float_info.epsilon = 252 =
2.220446049250313x1016eslamayorprecisinposible.

Ver:http://en.wikipedia.org/wiki/Machine_epsilon

Respuestacorta:sys.float_info.digreportaelnmerodedgitosquesonsiempre
correctos.Eldgito#16casisiempreescorrecto,peronosiempreloes.
Respuestalarga:
http://stackoverflow.com/questions/28493114/precisionofreprfstrfprintfwhenfisfloat

http://stackoverflow.com/questions/18409496/isit52or53bitsoffloatingpointprecision

Representacindenmeros
flotantesenelPC

Verdetallesen:

DavidGoldberg(1991).WhatEveryComputer
ScientistShouldKnowAboutFloatingPoint
Arithmetic.ComputingSurveys,March1991.

https://ece.uwaterloo.ca/~dwharder/NumericalAnalysis/02Numerics/Double/paper.pdf

http://en.wikipedia.org/wiki/Floating_point

http://en.wikipedia.org/wiki/IEEE_floating_point(IEEE754,1985)

http://en.wikipedia.org/wiki/Singleprecision_floatingpoint_format

http://en.wikipedia.org/wiki/Doubleprecision_floatingpoint_format

http://en.wikipedia.org/wiki/Quadrupleprecision_floatingpoint_format

InfinitoyNaN
NOTA:enMATLAB1/0da
infinito,nounaexcepcin
ZeroDivisionErrorcomoen
Python

Verificandoeltipodeunavariable

Convirtiendoflotantesaenterosy
viceversa
Observequelafuncin
int()truncaelnmero(lo
redondeahaciacerosin
decimales).Lafuncin
math.trunc()hacelo
mismoqueint()eneste
caso.

Convirtiendoentrebasesnumricas

Operadores

Losoperadoresespecificancomosepuede
manipularunobjeto/variable

Aritmticos:+*///%

Deasignacin:=+==*=/=%=&=|=

Relacionales:><>=<===!=

Lgicos:andornot

Bitabit:&|^~>><<

Especiales:.

**

in

not in

is

not is

Operacionesaritmticas,
asignaciones

Operacionesaritmticasbinarias
x+y

x*y

x/y

x%y

Operacionesaritmticasbinariascon
asignacin
x += y

x-y

x -= y

x *= y
x %= y

x /= y

Asignaciones(variable=expresin):
y = x + 4*y/(x - 2) + y;

Operadoresdeasignacin
simplificadaa=aoperadorb
Otrosoperadoresde
asignacinson:+=,-=,
*=,/=,&=,//=,<<=,
>>=,%=,|=,**=,^=
a += b es lo mismo que a = a + b
a -= b
a = a - b
a *= b
a = a * b
a /= b
a = a / b
a //= b
a = a // b
a **= b
a = a ** b
etc...

Operadores
aritmticos

Divisinentera//
Observe
que
este
operadorredondeahacia
menos infinito, no hacia
0 como lo hace el
lenguaje C. Si ambos
nmeros son enteros
retorna un entero. Si un
nmero es un float,
retornaunfloat.

Mltiples
asignacionesen
unasolalnea
Laconstantepi

Lavariable_funcionacomoel
Ansdelacalculadora

Pythonsoportanmeros
complejos

25

Fraccionarios
Las operaciones con
fraccionarios son ms
lentasqueconflotantes.

Elclculoconfractionses
muchomslentoqueel
clculoconfloats

Enesteejemplolenguaje
Ces32.4vecesms
rpidoquePython.

Elmdulomath

NOTA:utiliceelmdulocmathsi

piensatrabajarconnmeroscomplejos.

Redondeandonmeros

Precisindelosflotantes

Elmdulodecimal
Elmdulodecimaldaunasolucinalproblemade
la imprecisin de los flotantes. Esta imprecisin
es inaceptable cuando manejamos, por ejemplo,
dinero. Usar decimales es ms lento que usar
flotantes.

Booleanos
True=1oFalse=0

Booleanos

AligualqueenlenguajeC,0esfalso
ycualquiervalordiferentede0es
verdadero

bool()
Cadenavaca
Listavaca
Tuplavaca
Diccionariovaco

Cadena

NOTA:laslistas,las
cadenas,losconjuntos
ylosdiccionarioslos
veremosmsadelante.

Lista
Conjunto

Diccionario

Condicionales
En Python cualquier valor diferente de 0 es
verdadero; el cero es falso. Cuando se ponen
cadenas o listas, cualquier lista con una longitud
diferente de cero es verdadera. Cadenas, listas,
tuplas,conjuntosodiccionariosvacossonfalsos.
Losoperadoresderelacionales(decomparacin)
sonlosmismosqueenlenguajeC:><>=
<===!=
Losoperadoreslgicosson:and or not

Comparaciones

Ejemploconlosoperadoreslgicos
andyor
Supongaquesehadisparadounabala,yestaestenlaposicin
(pos_bala_x,pos_bala_y). Suponga que el jugador se encuentra
en las coordenadas(x,y).Siunabalaimpactaaljugador,suvida
sereduceen1:
if (x == pos_bala_x) and (y == pos_bala_y):
vida -= 1

?
Suponga que el jugador se encuentra en la posicin (x,y). El
tablerotienede0aXMAX1columnasyde0aYMAX1filas.Se
verificaqueeljugadornosehayasalidodeltableroas:
if (x<0) or (x>=XMAX) or (y<0) or (y>=YMAX):
print('Se ha salido del tablero de juego')

Tablasdeverdad

Encadenacindecomparaciones
Losoperadoressepuedenencadenar,porloque
a<b==ceslomismoque(a<b)and(b==c)
NOTA:estetipode
encadenacinnoesposible
realizarlaenlenguajeC,C++,
MATLAB,Pascal,entreotros.
EstanotacinpropiadePython
esmuyeleganteysegurole
costardeshabituarsedeella
cuandoaprendaotrolenguaje
deprogramacin.

Condicionales

Recuerdequesegnlaprecedenciadeoperadoreslos
operadoresseejecutanenelsiguienteorden(demayor
amenorprecedencia):

in,notin,is,isnot,<,<=,>,>=,!=,==

notx

and

or

porloqueAandnotBorCesequivalentea(Aand(notB))
orC

NOTA:eloperadorde
comparacin==esdiferente
deloperadordeasignacin=

Nocomparefloatscon==

Igualdadde
dosnmeros
reales

Precedenciadeoperadores

CualquierexpresindiferentedeceroesverdaderoenC,
mientrasquesiesceroseconsiderafalsa.
Conand:silaprimeraexpresinesfalsa,lasegundanose
evala:

if (x == 5) and (y == 10): print('x=5 y y=10')

Conor:silaprimeraexpresinesverdadera,lasegundano
seevala:

if (x == 5) or (y == 10)): print('x=5 o y=10')

Negacin(not):

if not (x == 5): print('x es diferente de 5')

Otrasoperacionesconsecuencias
debits

None

Observeque
noimprime
nada

None es una contante en Python


quesignificaunvalornulo.Seutiliza
para simbolizar queuna variable no
tiene un valor, o que el valor no
existe. No es lo mismo que False,
noes0,noesunacadenavaca,no
es una lista vaca, etc. No puede
compararse contra nada diferente
deNoneysiempreretornarfalso.
Se debe escribir None, no none,
NONE,NoNe,etc.

Noneenuncontextobooleano

Constantes

En programacin, una constante es un valor que no puede


(o no debe) ser alterado durante la ejecucin de un
programa. Esto en comparacin a las variables, cuyo valor
puedencambiardurantelaejecucinnormaldelprograma.
Las constantes noexistenenPython,perosisoncomunes
enotroslenguajesdeprogramacincomoPascal,CoC++.
Se sugiere (no es obligatorio, pero es una costumbre)
escribir el nombre de las constantes en MAYSCULAS,
paradistinguirlodelrestodevariables.

Tamaodelasvariablesen
memoria
Varandeimplementacinaimplementacindel
interpretador,porloquenosepuedefiardeeste
nmeroparalosclculos.

M
pr ayo
ec r
ed
en
ci
a

M
pr eno
ec r
ed
en
ci
a

Precedenciadeoperadores

Operatorsinthesameboxgrouplefttoright(exceptforexponentiation,whichgroupsfromrighttoleft).

Thepoweroperator**bindslesstightlythananarithmeticorbitwiseunaryoperatoronitsright,thatis,
2**1is0.5.

Referencias

Wikipedia

http://www.inventwithpython.com/

http://www.diveintopython3.net/

DocumentacindePython:

https://docs.python.org/3/tutorial/index.html

https://docs.python.org/3/

MarzalVar,Andrs;GraciaLuengo,Isabel;GarcaSevilla,
Pedro(2014).IntroduccinalaprogramacinconPython3.
Disponibleen:http://dx.doi.org/10.6035/Sapientia93

57

Você também pode gostar