Sunteți pe pagina 1din 6

ComputacincientficaconPythonparamdulosdeevaluacincontinua

enasignaturasdecienciasaplicadas
A N TER IO R |S IG U IEN T E

3.LenguajesdeProgramacin

TABLADECONTENIDOS
Autores

Autores:JosMaraHerreraFernndez,LuisMiguelSnchezBrea
Contenidosdeestecaptulo:

Quesnuevo
Licencia

Caractersticasdeprogramacin
Elementosdellenguaje
Comentarios
Variables
Tiposdedatos
ListasyTuplas
Diccionarios
Conjuntos
Listasporcomprensin
Funciones
Clases
Condicionales
Buclefor
Buclewhile
Mdulos
Sistemadeobjetos
Existennumerososmanualesdeprogramacin,ademsdemagnificosyextensosmanualesoficiales.Sirvadeejemplo,
http://pyspanishdoc.sourceforge.net/tut/tut.html, una amplia gua en espaol que a pesar de ser escrita en 2005 nos
proporcionar toda la informacn que necesitamos. Nosotros en esta seccin nos limitaremos a aportar un resumen
tomado de la wikipedia para que el lector pueda seguir el resto del libro de forma cmoda aunque recomendamos
visitar tanto la fuente original de la informacin, http://es.wikipedia.org/wiki/Python, como la gua que acabamos de
mencionar.

3.1.Caractersticasdeprogramacin

Descargas
Referencias
1.Introduccin
2.PuestaenMarcha
3.LenguajesdeProgramacin
4.MdulosCientficos
5.EcuacionesdeMaxwellenelvaco
6.Polarizacin
7.Interaccinradiacinmateria
8.ndicederefraccin:modelomicroscpico
9.EcuacionesdeFresnel
10.Pulsosdeluz
11.Interferencias
12.Mdulosdeptica
13.Difraccinencampocercano
14.Difraccinencampolejano
15.RedesdeDifraccin
16.Procesadopticodelainformacin

BSQUEDA
Nohacefaltadefinirlosdatos.
Lasfuncionessealmacenanenmdulos,quepuedenserdeltamaoquedeseemos.
Esnecesariodeclararlosmodulosylasfuncionesdeotrosmdulosquesevanaimplementar.
Hayinfinidaddemdulosdecualquierareadeinters.

3.1.1.Elementosdellenguaje
Pythonfuediseadoparaserledoconfacilidad.Unadesuscaractersticaseselusodepalabrasdondeotroslenguajes
utilizaran smbolos. Por ejemplo, los operadores lgicos !, || y && en Python se escriben not, or y and,
respectivamente.
Elcontenidodelosbloquesdecdigo(bucles,funciones,clases,etc.)esdelimitadomedianteespaciosotabuladores,
conocidoscomoindentacin,antesdecadalneaderdenespertenecientesalbloque.Pythonsediferenciaasdeotros
lenguajesdeprogramacinquemantienencomocostumbredeclararlosbloquesmedianteunconjuntodecaracteres,
normalmente entre llaves {}. Se pueden utilizar tanto espacios como tabuladores para identar el cdigo, pero se
recomiendanomezclarlos.
Debidoalsignificadosintcticodelaindentacin,unainstruccindebeestarcontenidaenlnea.Noobstante,sipor
legibilidadsequieredividirlainstruccinenvariaslneas,aadiendounabarrainvertidaalfinaldeunalnea,seindica
quelainstruccincontinaenlasiguiente.
lista=['valor1','valor2','valor3']
cadena='Estoesunacadenabastantelarga'

queesequivalentea
lista=['valor1','valor2'\
,'valor3']
cadena='Estoesunacadena'\
'bastantelarga'

3.1.2.Comentarios

Ira
Introduzcalostrminosdebsquedaounnombrede
mdulo,claseofuncin.

Loscomentariossepuedenponerdedosformas.Laprimeraymsapropiadaparacomentarioslargosesutilizandola
notacincomentario,tresapostrofesdeaperturaytresdecierre.
'''
ComentariomslargoenunalneaenPython
'''

Lasegundanotacinutilizaelsmbolo#delantedelalneaacomentar,
print"Holamundo"#Tambinesposibleaadiruncomentarioalfinaldeunalneadecdigo

El intrprete no tiene en cuenta los comentarios, lo cual es til si deseamos poner informacin adicional en nuestro
cdigocomo,porejemplo,unaexplicacinsobreelcomportamientodeunaseccindelprograma.

3.1.3.Variables
Lasvariablessedefinendeformadinmica,loquesignificaquenosetienequeespecificarculessutipodeantemano
y puede tomar distintos valores en otro momento, incluso de un tipo diferente al que tena previamente. Se usa el
smbolo=paraasignarvalores.
x=1
x="Estavariableesunacadena"#Estoesposibleporquelostipossonasignadosdinmicamente.

3.1.4.Tiposdedatos
Lostiposdedatossepuedenresumirenestatabla:
Tipo

Clase

Notas

Ejemplo

str

Cadena

Inmutable

Cadena

unicode Cadena

VersinUnicodedestr

uCadena

list

Secuencia

Mutable,puedecontenerobjetosdediversostipos

[4.0,Cadena,True]

tuple

Secuencia

Inmutable,puedecontenerobjetosdediversostipos

(4.0,Cadena,True)

set

Conjunto

Mutable,sinorden,nocontieneduplicados

set([4.0,Cadena,True])

frozenset Conjunto

Inmutable,sinorden,nocontieneduplicados

frozenset([4.0,Cadena,True])

dict

Mapping

Grupodeparesclave:valor

{key1:1.0,key2:False}

int

Nmeroentero

Precisin fija, convertido en long en caso de 42


overflow.

long

Nmeroentero

Precisinarbitraria

float

Nmerodecimal Comaflotantededobleprecisin

42L456966786151987643L
3.1415927

complex Nmero
complejo

Parterealyparteimaginariaj.

(4.5+3j)

bool

Valorbooleanoverdaderoofalso

TrueoFalse

Booleano

Mutable:sisucontenido(odichovalor)puedecambiarseentiempodeejecucin.
Inmutable:sisucontenido(odichovalor)nopuedecambiarseentiempodeejecucin.

3.1.5.ListasyTuplas
Paradeclararunalistaseusanloscorchetes[],encambio,paradeclararunatuplaseusanlosparntesis().En
ambasloselementosseseparanporcomas,yenelcasodelastuplasesnecesarioquetengancomomnimouna
coma.
Tanto las listas como las tuplas pueden contener elementos de diferentes tipos. No obstante las listas suelen
usarseparaelementosdelmismotipoencantidadvariablemientrasquelastuplassereservanparaelementos
distintosencantidadfija.
Paraaccederaloselementosdeunalistaotuplaseutilizaunndiceentero(empezandopor0,nopor1).Se
puedenutilizarndicesnegativosparaaccederelementosapartirdelfinal,porejemploparaaccederalltimo
ndicedeberamosdeusar1.
Las listas se caracterizan por ser mutables, es decir, se puede cambiar su contenido en tiempo de ejecucin,
mientrasquelastuplassoninmutablesyaquenoesposiblemodificarelcontenidounavezcreada.
Listas:
>>>lista=["abc",42,3.1415]#Definicindeunalistaconelementosdedistintotipo.
>>>lista[0]#Accederaunelementoporsundice,enestecasoalprimero.
'abc'
>>>lista[1]#Accederaunelementousandounndicenegativo,enestecasoelltimo.
3.1415
>>>lista.append(True)#Aadirunelementoalfinaldelalista.
>>>lista

['abc',42,3.1415,True]
>>>dellista[3]#Borraunelementodelalistausandounndice(enestecaso:True).
>>>lista
['abc',42,3.1415]
>>>lista[0]="xyz"#Reasignarelvalordelprimerelementodelalista.
>>>lista
['xyz',42,3.1415]
>>>lista[0:2]#Mostrarloselementosdelalistadelndice"0"al"2"(sinincluiresteltimo).
['xyz',42]
>>>lista_anidada=[lista,[True,42L]]#Esposibleanidarlistas
>>>lista_anidada
[['xyz',42,3.1415],[True,42L]]
>>>lista_anidada[1][0]#Accederaunelementodeunalistadentrodeotralista(delsegundoelemento,mostrarelprimerelemento).
True

Tuplas:
>>>tupla=("abc",42,3.1415)#Definicindeunatuplaconelementosdedistintotipo.
>>>tupla[0]#Accederaunelementoporsundiceenestecasoalprimero.
'abc'
>>>deltupla[0]#Noesposibleborrar(niaadir)unelementoenunatupla,loqueprovocarunaexcepcin.
(Excepcin)
#Tampocoesposiblereasignarelvalordeunelementoenunatupla,loquetambinprovocarunaexcepcin.
>>>tupla[0]="xyz"
(Excepcin)
>>>tupla[0:2]#Mostrarloselementosdelatupladelndice"0"al"2"(sinincluiresteltimo).
('abc',42)
>>>tupla_anidada=(tupla,(True,3.1415))#Tambinesposibleanidartuplas.
>>>1,2,3,"abc"#Estotambinesunatupla,aunqueesrecomendableponerlaentreparntesis(recuerdaquerequiere,almenos,unacoma).
(1,2,3,'abc')
>>>(1)#Aunqueentreparntesis,estonoesunatupla,yaquenoposeealmenosunacoma,porloquenicamenteaparecerelvalor.
1
>>>(1,)#Encambio,enesteotrocaso,sesunatupla.
(1,)
>>>(1,2)#Conmsdeunelementonoesnecesarialacomafinal.
(1,2)
>>>(1,2,)#Aunqueagregarlanomodificaelresultado.
(1,2)

3.1.6.Diccionarios
Para declarar un diccionario se usan las llaves { }. Contienen elementos separados por comas, donde cada
elementoestformadoporunparclave:valor(elsmbolo:separalaclavedesuvalorcorrespondiente).
Losdiccionariossonmutables,esdecir,sepuedecambiarelcontenidodeunvalorentiempodeejecucin.
Encambio,lasclavesdeundiccionariodebenserinmutables.Estoquieredecir,porejemplo,quenopodremos
usarnilistasnidiccionarioscomoclaves.
Elvalorasociadoaunaclavepuedeserdecualquiertipodedato,inclusoundiccionario.
>>>diccionario={"cadena":"abc","numero":42,"lista":[True,42L]}#Diccionarioquetienediferentesvaloresporcadaclave,inclusounalista.
>>>diccionario["cadena"]#Usandounaclave,seaccedeasuvalor.
'abc'
>>>diccionario["lista"][0]#Accederaunelementodeunalistadentrodeunvalor(delvalordelaclave"lista",mostrarelprimerelemento).
True
>>>diccionario["cadena"]="xyz"#Reasignarelvalordeunaclave.
>>>diccionario["cadena"]
'xyz'
>>>diccionario["decimal"]=3.1415927#Insertarunnuevoelementoclave:valor.
>>>diccionario["decimal"]
3.1415927
>>>diccionario_mixto={"tupla":(True,3.1415),"diccionario":diccionario}#Tambinesposiblequeunvalorseaundiccionario
>>>diccionario_mixto["diccionario"]["lista"][1]#Accederaunelementodentrodeunalista,queseencuentradentrodeundiccionario.
42L
>>>diccionario={("abc",):42}#Sesposiblequeunaclaveseaunatupla,puesesinmutable.
>>>diccionario={["abc"]:42}#Noesposiblequeunaclaveseaunalista,puesesmutable,loqueprovocarunaexcepcin.
(Excepcin)

3.1.7.Conjuntos
Losconjuntosseconstruyenmedianteset(items)dondeitemsescualquierobjetoiterable,comolistasotuplas.
Losconjuntosnomantienenelordennicontienenelementosduplicados.

Se suelen utilizar para eliminar duplicados de una secuencia, o para operaciones matemticas como
interseccin,unin,diferenciaydiferenciasimtrica.
>>>conjunto_inmutable=frozenset(["a","b","a"])#Seutilizaunalistacomoobjetoiterable.
>>>conjunto_inmutable
frozenset(['a','b'])
>>>conjunto1=set(["a","b","a"])#Primerconjuntomutable.
>>>conjunto1
set(['a','b'])
>>>conjunto2=set(["a","b","c","d"])#Segundoconjuntomutable.
>>>conjunto2
set(['a','c','b','d'])#Recuerda,nomantienenelorden,comolosdiccionarios.
>>>conjunto1&conjunto2#Interseccin
set(['a','b'])
>>>conjunto1|conjunto2#Unin.
set(['a','c','b','d'])
>>>conjunto1conjunto2#Diferencia(1).
set([])
>>>conjunto2conjunto1#Diferencia(2).
set(['c','d'])
>>>conjunto1^conjunto2#Diferenciasimtrica.
set(['c','d'])

3.1.8.Listasporcomprensin
Unalistaporcomprensin(eningls:listcomprehension)esunaexpresincompactaparadefinirlistas.Aligualque
lambda,apareceenlenguajesfuncionales.Ejemplos:
>>>range(5)#Lafuncin"range"devuelveunalista,empezandoen0yterminandoconelnmeroindicadomenosuno.
[0,1,2,3,4]
>>>[i*iforiinrange(5)]#Porcadaelementodelrango,lomultiplicaporsmismoyloagregaalresultado.
[0,1,4,9,16]
>>>lista=[(i,i+2)foriinrange(5)].
>>>lista
[(0,2),(1,3),(2,4),(3,5),(4,6)]

3.1.9.Funciones
Las funciones se definen con la palabra clave def, seguida del nombre de la funcin y sus argumentos entre
parntesisparafinalizarcon:,esdecir,
>>>defmi_funcion(arg1,arg2,...,argN):

Otra forma de escribir funciones, aunque menos utilizada, es con la palabra clave lambda. lambda es un
cosntructorquesirverparaejecutarfuncionesannimas,esdecirfuncionessinningnnombreperoquecrean
unareferenciaaunobjetofuncin.Lasintaxisdelambdaenpythones
lambda<aParameterList>:<aPythonexpressionusingtheparameters>

Elvalordevueltoenlasfuncionescondefsereldadoconlainstruccinreturn.lambdanonecesitadereturn
pararetornarunvalor,yaqueestimplcito,puestoquelafuncinenteradebeserunanicaexpresin.
def
>>>defsuma(x,y=2):
...returnx+y#Devuelvelasumadelvalordelavariable"x"yelvalorde"y".
...
>>>suma(4)#Lavariable"y"nosemodifica,siendosuvalor:2
6
>>>suma(4,10)#Lavariable"y"ssemodifica,siendosunuevovalor:10
14

lambda
>>>suma=lambdax,y=2:x+y
>>>suma(4)#Lavariable"y"nosemodifica,siendosuvalor:2
6
>>>suma(4,10)#Lavariable"y"ssemodifica,siendosunuevovalor:10
14

3.1.10.Clases
Lasclasessedefinenconlapalabraclaveclass, seguida del nombre de la clase y, si hereda de otra clase, el
nombredeesta.
EnPython2.xesrecomendablequeunaclaseherededeobject,enPython3.xestoyanoharfalta.
Enunaclaseunmtodoequivaleaunafuncin,yunapropiedadequivaleaunavariable.
__init__ es un mtodo especial que se ejecuta al instanciar la clase, se usa generalmente para inicializar
propiedadesyejecutarmtodosnecesarios.AligualquetodoslosmtodosenPython,debeteneralmenosun
parmetro,generalmenteseutilizaself.Elrestodeparmetrossernlosqueseindiquenalinstanciarlaclase.
Laspropiedadesquesedeseequeseanaccesiblesdesdefueradelaclasesedebendeclararusandoself.delante
delnombre.
Enpythonnoexisteelconceptodeencapsulacin,porloqueelprogramadordebeserresponsabledeasignar
losvaloresalaspropiedades
>>>classPersona(object):
...def__init__(self,nombre,edad):
...self.nombre=nombre#UnaPropiedadcualquiera.
...self.edad=edad#Otrapropiedadcualquiera.
...defmostrar_edad(self):#Esnecesarioque,almenos,tengaunparmetro,generalmente:"self".
...printself.edad#mostrandounapropiedad.
...defmodificar_edad(self,edad):#ModificandoEdad.
...ifedad<0oredad>150:#Secompruebaquelaedadnoseamenorde0(algoimposible),nimayorde150(algorealmentedifcil).
...returnFalse
...else:#Siestenelrango0150,entoncessemodificalavariable.
...self.edad=edad#Semodificalaedad.
...
>>>p=Persona("Alicia",20)#Instanciamoslaclase,comosepuedever,noseespecificaelvalorde"self"
>>>p.nombre#Lavariable"nombre"delobjetosesaccesibledesdefuera.
'Alicia'
>>>p.nombre="Andrea"#Yportanto,sepuedecambiarsucontenido.
>>>p.nombre
'Andrea'
>>>p.mostrar_edad()#Podemosllamaraunmtododelaclase.
20
>>>p.modificar_edad(21)#Ypodemoscambiarlaedadusandoelmtodoespecficoquehemoshechoparahacerlodeformacontrolada.
>>>p.mostrar_edad()
21

3.1.11.Condicionales
Unasentenciacondicionalifejecutasubloquedecdigointernoslosisecumpleciertacondicin.Sedefineusandola
palabra clave if seguida de la condicin, y el bloque de cdigo. Condiciones adicionales, si las hay, se introducen
usandoelif seguida de la condicin y su bloque de cdigo. Todas las condiciones se evalan secuencialmente hasta
encontrar la primera que sea verdadera, y su bloque de cdigo asociado es el nico que se ejecuta. Opcionalmente,
puedehaberunbloquefinal(lapalabraclaveelseseguidadeunbloquedecdigo)queseejecutaslocuandotodaslas
condicionesresultanfalsas.
>>>verdadero=True
>>>ifverdadero:#Noesnecesarioponer"verdadero==True".
...print"Verdadero"
...else:
...print"Falso"
...
Verdadero
>>>lenguaje="Python"
>>>iflenguaje=="C":#lenguajenoes"C",porloqueestebloqueseobviaryevaluarlasiguientecondicin.
...print"Lenguajedeprogramacin:C"
...eliflenguaje=="Python":#Sepuedenaadirtantosbloques"elif"comosequiera.
...print"Lenguajedeprogramacin:Python"
...else:#Encasodequeningunadelasanteriorescondicionesfueracierta,seejecutaraestebloque.
...print"Lenguajedeprogramacin:indefinido"
...
Lenguajedeprogramacin:Python
>>>ifverdaderoandlenguaje=="Python":#Usode"and"paracomprobarqueambascondicionessonverdaderas.
...print"VerdaderoyLenguajedeprogramacin:Python"
...
VerdaderoyLenguajedeprogramacin:Python

3.1.12.Buclefor

El bucle for es similar a foreach en otros lenguajes. Recorre un objeto iterable, como una lista, una tupla o un
generador, y por cada elemento del iterable ejecuta el bloque de cdigo interno. Se define con la palabra clave for
seguida de un nombre de variable, seguido de in, seguido del iterable, y finalmente el bloque de cdigo interno. En
cadaiteracin,elelementosiguientedeliterableseasignaalnombredevariableespecificado:
>>>lista=["a","b","c"]
>>>foriinlista:#Iteramossobreunalista,queesiterable.
...printi
...
a
b
c
>>>cadena="abcdef"
>>>foriincadena:#Iteramossobreunacadena,quetambinesiterable.
...printi,#Aadiendounacomaalfinalhacemosquenointroduzcaunsaltodelnea,sinounespacio.
...
abcdef

3.1.13.Buclewhile
El bucle while evala una condicin y, si es verdadera, ejecuta el bloque de cdigo interno. Contina evaluando y
ejecutando mientras la condicin sea verdadera. Se define con la palabra clave while seguida de la condicin, y a
continuacinelbloquedecdigointerno:
>>>numero=0
>>>whilenumero<10:
...numero+=1
...printnumero,
...
123456789

3.1.14.Mdulos
Existen muchas propiedades que se pueden agregar al lenguaje importando mdulos, que son minicdigos (la
mayoraescritostambinenPython)queproveendeciertasfuncionesyclasespararealizardeterminadastareas.Un
ejemplo es el mdulo Tkinter, que permite crear interfaces grficas basadas en la biblioteca Tk. Otro ejemplo es el
mdulo os, que provee acceso a muchas funciones del sistema operativo. Los mdulos se agregan a los cdigos
escribiendoimportseguidadelnombredelmduloquequeramosusar.
>>>importos#Mduloqueproveefuncionesdelsistemaoperativo
>>>os.name#Devuelveelnombredelsistemaoperativo
'posix'
>>>os.mkdir("/tmp/ejemplo")#Creaundirectorioenlarutaespecificada
>>>importtime#Mduloparatrabajarconfechasyhoras
>>>time.strftime("%Y%m%d%H:%M:%S")#Dndoleunciertoformato,devuelvelafechay/ohoraactual
'2010081018:01:17'

NOTA: En http://pyspanishdoc.sourceforge.net/modindex.html podemos encontrar el ndice de mdulos estndar de


python.

3.1.15.Sistemadeobjetos
En Python todo es un objeto (incluso las clases). Las clases, al ser objetos, son instancias de una metaclase. Python
ademssoportaherenciamltipleypolimorfismo.
>>>cadena="abc"#Unacadenaesunobjetode"str"
>>>cadena.upper()#Alserunobjeto,poseesuspropiosmtodos
'ABC'
>>>lista=[True,3.1415]#Unalistaesunobjetode"list"
>>>lista.append(42L)#Unalistatambin(aligualquetodo)esunobjeto,ytambinposeesuspropiosmtodos
>>>lista
[True,3.1415,42L]

ANTERIOR|SIGUIENTE
MOSTRARELCDIGO
Copyright2013,LuisMiguelSnchezBrea.CreadoconSphinx

S-ar putea să vă placă și