Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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
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
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++
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.
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:
Conor:silaprimeraexpresinesverdadera,lasegundano
seevala:
Negacin(not):
Otrasoperacionesconsecuencias
debits
None
Observeque
noimprime
nada
Noneenuncontextobooleano
Constantes
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