Professional Documents
Culture Documents
Sumrio
1 2 3 4 5 6 Caractersticas bsicas da linguagem Obteno e instalao Variveis Operaes matemticas Entrada de Dados Estruturas de controle
6.1 6.2 6.3
2 3 3 4 5 6
6 7 7
If . . . While For . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Listas
7.1 7.2 7.3 7.4 7.5 7.6 Inserindo um novo dado a uma lista . . . . . . . . . . . . . . . Impresso dos contedos da lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Determinar em que ordem um elemento aparece na lista Remover um elemento de uma lista
9
11 11 12 12 13 14
Range
8 9
Dicionrio Funes
9.1 9.2 Variveis em funes . . . . . . . . . . . . . . . . . . . . . . . Recursividade . . . . . . . . . . . . . . . . . . . . . . . . . . .
15 16
17 18
10 Mdulos
10.1 Mdulo
Math
20
. . . . . . . . . . . . . . . . . . . . . . . . . . 21 22 25 25 25
10.2 Mdulo io - Manipulao de arquivos . . . . . . . . . . . . . . 10.3 PySQLite: Manipulao de Bancos de Dados . . . . . . . . . . 10.3.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . 10.3.2 Comandos bsicos . . . . . . . . . . . . . . . . . . . . .
11 Expresses booleanas
26
Introduo
A idia de um ser humano, enquanto for apenas um pensamento, algo amorfo, que existe por si mesma, no necessitando de nada, alm de si, para descrev-la. Entretanto para compartilh-la com outras pessoas precisamos descrever esta idia com palavras e frases, transformando este pensamento em uma linguagem natural humana. Computadores e outros dispositivos eletrnicos programveis possuem sua prpria forma de pensar, isto , o cdigo binrio. seus componentes. Ento para transmitir uma idia para uma mquina devo me comunicar em zeros e uns? A resposta para esta pergunta um sim e um no. Um sim pois, de fato, a idia que ser recebida pela mquina ser descrita como uma sequncia de zeros e uns. O no se refere a dizer que embora seja possvel traduzir sua idia para uma linguagem natural da mquina (binrio), este no o processo mais comum. A programao diretamente em binrio algo demasiadamente complexo para humanos, pois a forma bsica de expresso do ser humano so as palavras e no sequncias numricas. Para contornar este problema foram criadas as linguagens de programao, que so pontes entre a linguagem natural humana e a linguagem da mquina (binria), mesclando conceitos das linguagens de mquina e natural humana. As linguagens de programao so classicadas em vrios nveis de acordo com sua proximidade com a linguagem humana. Linguagens de baixo nvel tem a funo de descrever uma situao mais prxima do ponto de vista de uma mquina, ao passo que linguagens de alto nvel so concebidas com o propsito de tornar fcil a traduo de um pensamento (algoritmo), se assemelhando com delidade linguagem humana que seria necessria para descrever aquela idia. Neste tutorial descreveremos a linguagem de programao Python cujo objetivo se aproximar bastante da linguagem humana, sendo assim intuitiva, fcil e ao mesmo tempo sendo bastante exvel, se adequando ao uso em diversas situaes. Mquinas seguem instrues determinadas pela energizao (ou no) de determinadas partes em
Python uma linguagem de programao interpretada, de cdigo-fonte aberto e disponvel para vrios sistemas operacionais. Ser uma linguagem interpretada signica dizer que ao se escrever um programa, este no ser compilado (traduzido para uma linguagem de mquina), mas sim lido por um outro
programa (chamado de interpretador) que traduzir para a mquina o que seu programa quer dizer. O interpretador para Python interativo, ou seja, possvel execut-lo sem fornecer um script (programa) para ele. Ao invs disso, o interpretador disponibilizar uma interface interativa onde possvel inserir os comandos desejados um por um e ver o efeito de cada um deles. Neste tutorial, se encontra a representao >>> antes da maioria dos comandos apresentados , o que quer dizer que este comando est sendo inserido no interpretador interativo (e sempre abaixo, o resultado gerado).
Obteno e instalao
Caso o usurio esteja utilizando um sistema Linux ou OS X (Apple), o interpretador para Python j vem instalado por padro, sendo apenas necessrio escrever o comando python no seu programa de terminal favorito. Para usurios do sistema operacional Windows, o interpretador para Python deve ser baixado atravs do site http://www.python.org e instalado. Neste ltimo sistema o usurio encontra um utilitrio para fazer o papel de terminal (e editor de python) no Windows, denominado IDLE.
Variveis
Variveis so formas de se armazenar dados para uso posterior, elas podem ser classicadas em 3 tipos bsicos que so mostradas logo abaixo. Quando analisarmos as listas veremos que existem outras variveis mais complexas.
int
oat
string
Ao contrrio da maioria das outras linguagens, em Python, no necessrio declarar as variveis que sero usadas, tampouco denir seu tipo. A prpria sintaxe do dado a ser armazenado identica o tipo da varivel para armazenlo. Por exemplo, caso deseje-se atribuir o valor 3 varivel
A=3. Python saber que A um inteiro (tipo int ). Por outro lado, se o
valor a ser armazenado fosse 3,2 que um dado do tipo ponto utuante, este deveria ser expresso como
A, basta digitar
B=3.0 so variveis de tipos diferentes e isto deve ser levado em conta ao se realizar certos tipos de manipulaes de dados.
Operaes matemticas
Suas capacidades matemticas se extendem desde
Alm de ser uma poderosa linguagem de programao, Python sabe lidar bem com matemtica. operaes bsicas at operaes com nmeros complexos. Abaixo, vamos comear aprendendo as 4 operaes matemticas bsicas. Lembre-se que >>> signica a digitao de um comando no interpretador.
1/n onde n
Entrada de Dados
string
raw_input
len() .
string.
>>> nome a rwinput@9higite seu nomeX 9A higite seu nomeX edro >>> nome 9edro9 >>> len@nomeA S >>> sorenome a rwinput@9egor digite o sorenomeX 9A egor digite o sorenomeX eluquerque
oats
strings,
strings,
apenas com
string,
input():
>>> idde a input@9higite su iddeX 9A higite su iddeX PU >>> ltur a input@9ul su lturX 9A ul su lturX IFUS >>> type@iddeA `type 9int9b >>> type@lturA `type 9)ot9b
Observao: O dado inserido pelo usurio j dinamicamente tipado. Para saber qual foi a varivel atribuda, basta digitar o comando devolver a varivel referente ao objeto entre parnteses.
Estruturas de controle
Os comandos de Python so executados pelo computador, linha por linha e as estruturas de controle permitem ao programador modicar a ordem em que cada comando ser executado bem como se ele ser ou no executado.
6.1
If
if direciona o
computador a tomar uma deciso, baseado nas condies determinadas. Se a condio for atendida, um bloco de comandos ser executado, caso contrrio, o computador executa outros comandos.
>>>if 5ondioI for verddeirX ... ... ...elseX ... 5loo de omndos Q 5loo de omndos I 5loo de omndos P ...elif 5ondioP for verddeirX
elif
>>>num a PQ >>>dv a H >>>while dv 3a numX ... ... ... ... ... ... ... ... >>>snsir um nmeroX
Como vimos, em Python no necessrio que utilizemos a terminarmos uma estrutra.
dv a input@9snsir um nmeroX 9A if dv ` numX print 9 mior39 elif dv b numX print 9 menor39 elseX print 9o ertou39
tag
end para
Em da prx-
tag
6.2
While
O
loop
funo repetir determinado bloco de comando, at que uma determinada condio pare de ser atendida. Para que o bloco seja executado no momento correto, devemos manter uma rgida identao, ou seja, tudo que pertencer ao bloco do
legvel e organizado.
>>> while 5ondio for verddeir X ... ... >>> 5ontinuo do progrm
Vejamos, por exemplo, como calcular um nmero fatorial:
>>> resultdo a I >>> num a input@9intre om um nmero inteiroX 9A >>> intre om um nmero inteiroX T >>> while num b IX ... ... ... >>> print numD 9 3 igul 9Dresultdo >>> T3 igul UPH
Se a condio estabelecida no o seu
loop
ser innito, pois a condio ser sempre atendida. Caso esse seja
uma condio qualquer (isso porque segundo a lgica booleana, que ser vista na nona seo, o python interpreta o valor 1 como verdadeiro).
6.3
For
for, em Python, difere do que normalmente se v em outras
O comando
linguagens de programao, onde esse comando tem a nalidade de realizar uma iterao baseada numa progresso aritimtica, percorrendo os nmeros denido pelo usurio, enquanto em Python a iterao feita percorrendo os itens de uma sequncia, seja ela uma lista ou at mesmo uma
string.
Vamos
contador, para
loop
aponte para um diferente valor dentro da lista formada pela funo logo em seguida imprima esse valor. A sada que teramos neste caso seria:
I P Q R S T U V W IH
Ou seja, um print de todos os elementos da lista. A funo
strings, observemos
o caso abaixo:
>>> list a 9vid9D RPD 9o universo9D TD 9e9D UD 9tudo9 >>> for item in listX ... print 9y item tul X9Dprint
y item tul X vid y item tul X RP y item tul X o universo y item tul X T y item tul X e y item tul X U y item tul X tudo
8
Exerccios:
IF ixiir um srie de nmeros @ID PD QD RD SD FFF A em um loop in(nitoF y progrm deve enerrrEse qundo for pressiond um tel espe(D omo um igF PF yter um srie de nmeros do teldo e ordenEls tnto em ordem sendente omo desendenteF pzer o mesmo om um srie de stringsF QF glulr o goe(iente de eynoldsD reeendo os prmetros ns uniddes propridsF sndirD em funo deste oe(ienteD se o )uxo lminr @resultdo inferior PFIHHAD de trnsio @entre PFIHH e RFHHHA ou turulento @im de RFHHHA RF p um rogrm que pe P nmeros inteiros e um nmero relF glule e mostreX
A y produto do doro do primeiro om metde do segundo F A e som do triplo do primeiro om o tereiroF A y tereiro elevdo o uoF
SF p um progrm que ree dois nmeros inteiros e gere os nmeros inteiros que esto no intervlo ompreendido por elesF TF p um progrm que pe um nmero inteiro e determine se ele ou no um nmero primoF m nmero primo quele que divisvel somente por ele mesmo e por IF
Listas
Listas so sequncias de variveis. Aps denidas, podem ser modicadas de vrias maneiras, pois so mutveis. Para denir uma lista basta digitar:
lista = [9,8,7]
O endereamento dos componentes comea no 0. Ento, se voc deseja usar um determinado elemento da lista, basta cham-lo: voc est se referindo ao elemento de posio x na lista. Alguns comandos referentes a listas:
len(lista) informa o tamanho da lista lista.append(x) adiciona o elemento x no nal da sua lista lista.extend([6,5,4]) adiciona uma lista inteira no nal da sua lista lista[y]= x insere o valor y na posio x da lista
Ns j vimos anteriormente que variveis comuns armazenam um nico valor. Entretanto, existem outros tipos de variveis capazes de armazenar mais de um valor. Em Python, chamamos essas variveis com capacidade de armazenamento de listas ou vetores. Vamos explicar a sintaxe de uma lista atravs das linhas de cdigo exibidas abaixo:
>>> meses a 9tneiro9D 9pevereiro9D 9wro9D 9eril9D 9wio9D 9tunho9D 9tulho9D9egosto9D 9etemro9D 9yutE uro9D 9xovemro9D 9hezemro9 >>> while IX ... ... ... qulmes a input@isolh um ms @IEIPAcA if I `a whihone `a IPX print 9y ms 9D mesesqulmes E I
>>> isolh um ms @IEIPAc S y ms wio >>> isolh um ms @IEIPAc IP y ms hezemro >>> isolh um ms @IEIPAc
Primeiramente criamos a nossa lista. A denio de uma lista anloga a de uma varivel qualquer, porm isolando o contedo com colchetes. O uso das aspas (duplas ou simples) apenas necessrio caso estejamos inserindo na lista uma
Exemplo:
loop.
Ctrl+D, ou at que o programa seja fechado. Uma vez nesse feito com a utilizao de um comando
loop, denida
selecionado. Na ltima linha do cdigo utilizamos uma propriedade da lista, que buscar um dado da lista, que se d escrevendo o nome da lista e entre colchetes o nmero referente ao local da lista, onde est o dado requerido (lista[nmero]). Observe que na nossa linha de cdigo, o comando zero.
10
Alm de selecionar um elemento de uma lista, temos algumas outras propriedades que apresentaremos em seguida.
7.1
Para inserir um novo dado a uma lista qualquer, chamamos um mtodo chamado
.extend:
>>>testeFextend@9dois9D9trs9D >>>som a 9qutro9D9ino9 >>>teste Ca som >>>teste C 9seis9 9zero9D9um9D9dois9D9trs9D9qutro9D9ino9D9seis9 >>>testeBP zero9D9um9D9dois9D9trs9D9qutro9D9ino9D9seis9Dzero9D9um9D9dois9D9trs9D9qutro9D9ino9D9seis9
Observao: o cdigo
teste + soma.
7.2
Ao chamarmos a lista
estamos lidando com todos os elementos da lista. Podemos tambm imprimir somente alguns valores de dentro da lista, necessitando para isso apenas indicar o local:
>>>print 9es vrivis n list teste so 9Dteste es vrivis n list teste so 9zero9D9um9D9dois9D9trs9D9qutro9 >>>print 9es vrivis H e Q d list teste so 9DtesteHD9 e 9DtesteQ
11
for.
>>>for vlor in testeX ... print vlor ... zero um dois trs qutro
7.3
A funo
cado, ou seja, para imprimirmos na tela a posio em que a aparece, utilizaramos o cdigo:
string
quatro
>>>print listFindex@4qutroA R
Observao: importante notar que a lista inicia sua contagem a partir
7.4
del, referen-
>>>print 9entes list 9teste9 erX 9Dteste entes list 9teste9 erX 9zero9D9um9D9dois9D9trs9D9qutro9 >>>del testeQ >>>print 9egor list 9teste9 X 9Dteste egor list 9teste9 X 9zero9D9um9D9dois9D9qutro9
Podemos obter o mesmo efeito utilizando o mtodo
string :
12
>>>list Ca 9um9 >>>print 9entes list 9teste9 erX 9Dteste entes list 9teste9 erX 9zero9D9um9D9dois9D9qutro9D9um9 >>>testeFremove@4umA >>>print 9egor list 9teste9 X 9Dteste egor list 9teste9 X 9zero9D9dois9D9qutro9D9um9
7.5
Para descobrir o tamanho de uma lista, usamos o comando emplicado no cdigo abaixo:
13
7.6
Range
range gera um vetor contendo nmeros (inteiros) sequnciais, obe-
A funo
range(incio,m)
importante observar que o nmero nalizador descrito acima no includo no vetor, por exemplo:
inicial seja maior que o nmero nal, bem como quando apenas o nmero nal passado para a funo, portanto so vlidas as construes:
>>> rnge@ID IHA ID PD QD RD SD TD UD VD W >>> rnge@EQPD EPHA EQPD EQID EQHD EPWD EPVD EPUD EPTD EPSD EPRD EPQD EPPD EPI >>> rnge@SDPIA SD TD UD VD WD IHD IID IPD IQD IRD ISD ITD IUD IVD IWD PH >>> rnge@SA HD ID PD QD R >>> rnge@PID SA
No ltimo exemplo foi retornado um vetor vazio, isso se deu porque o elemento inicial era maior que o nal. Outra caracterstica importante desse comando a de adicionar uma terceira varivel no dos.
14
Exerccios:
IF p um progrm que lei um vetor de S nmeros inteiros e mostreEosF PF p um progrm que lei dois vetores om IH elementos dF qere um tereiro vetor de PH elementosD ujos vlores devero ser ompostos pelos elementos interldos dos dois outros vetoresF QF p um progrm que lei R notsD mostre s nots e mdi n telF RF p um progrm que lei um nmero indetermindo de vloresD orrespondentes notsD enerE rndo entrd de ddos qundo for informdo um vlor igul EI @que no deve ser rmzendoAF eps est entrd de ddosD fX
A wostre quntidde de vlores que form lidosF A ixi todos os vlores n ordem em que form informdosD um o ldo do outroF A glule e mostre mdi dos vloresF dA glule e mostre quntidde de vlores im d mdi luldF eA inerre o progrm om um mensgemF
Dicionrio
Um dicionrio um conjunto de elementos que possuem ndices, ou seja, dicionrios so formados por chaves e seus respectivos valores, onde as chaves so os ndices. Para se declarar um dicionrio e os elementos a ele pertecentes, escrevemos:
>>>lulos a { IX9primeiro periodo9 D PX9segundo periodo9 D RX9tereiro periodo9 D VX9quinto periodo9 } >>>print lulos { IX9primeiro periodo9 D PX9segundo periodo9 D RX9tereiro periodo9 D VX9quinto periodo9 } >>>print lulosQ 9tereiro periodo9
Os valores referentes aos ndices podem ser mudados.
keys()
- Retorna uma lista com as chaves do dicionrio - Retorna uma lista com os valores do dicionrio - Retorna uma lista com as chaves e seus respectivos valores - Verica se o dicionrio possui a chave x
values() items()
has_key(x)
15
Exerccios:
IF p um diionrio que ontenh sus refeies e um limento que estej ontido em d um delsF smprim n telF eps issoD mude os limentos pelos seus limentos fvoritosF PF p um diionrio que ontenh os meses do no e um niversrinte por msF epsD pergunte o usurio um niversrinte por ms e troque os vlores do seu lendrio de niversrio pelos do usurioF
Funes
As linguagens de programao em geral tm o intuito de automatizar aes tornando-as mais rpidas. Se houver alguma ao que seja grande e utilizada com frequncia, temos a opo de criar uma funo que cumpra o seu objetivo, reduzindo o espao ocupado pelo nosso programa nal, alm de deix-lo com uma aparncia mais limpa, visto que o tamanho do cdigo ir diminuir. Essas funes tambm so muito teis na tarefa de debuggar o seu cdigo, visto que voc no precisar vasculhar o cdigo atrs do erro, basta entrar na funo e modic-la. Um exemplo de como podemos diminuir um cdigo est descrito abaixo. Se em um determinado problema, precisarmos descobrir se dois valores absolutos so iguais podemos utilizar o cdigo 1 descrito abaixo todas as vezes que precisarmos realizar essa descoberta, ou podemos simplesmente usar o cdigo 2 criando uma funo que cumpra esse objetivo exigindo apenas que apresentemos os valores que devemos analisar. Dado que temos os valores: a = 23 b = -23 Funo 1:
>>> if ` HX ... >>> if ` HX ... ... ... elseX ... print 9ys vlores solutos de 9D D 9 e 9D D 9 so iguis9 a E print 9ys vlores solutos de 9D D 9 e 9D D 9 so iguis9 >>> if aa X a E
16
Funo 2:
>>>def omprsolutos@DAX ... ... ... ... ... ... ... ... ... ...
Abaixo apresentamos a sintaxe necessria para criao de funes utilizando a linguagem Python.
iss funo retorn se os vlores solutos ds vriveis requerids so iguis if ` HX a E if ` HX a E if aa X print 9ys vlores solutos de 9D D 9 e 9D D 9 so iguis9 elseX print 9ys vlores solutos de 9D D 9 e 9D D 9 so iguis9
que ao chamar uma funo, podemos passar a esta alguns parmetros (valores ou
strings ):
gumas funes ao colocarmos nosso cdigo na seo bloco de comandos, a funo automaticamente denir os parmetros necessrios. Por exemplo, se houver uma funo que faa clculos matemticos, devolvendo um resultado numrico, ser necessrio que todas as variveis chamadas pela funo sejam inteiros ou
oats.
9.1
Variveis em funes
Em Python, as
Em geral, quando estamos eliminando cdigo repetitivo por meio de funes tambm temos algumas variveis repetidas neste cdigo. variveis podem ter tratamentos diferentes em funo de onde se encontram. Todas as variveis que vimos at agora so chamadas de variveis globais, ou seja, em qualquer momento ou em qualquer parte do cdigo do seu programa, voc poder utiliz-las (seja para ler seu contedo ou atribuir valores). Funes tem um tipo especial de variveis que so chamadas de variveis locais. Estas variveis existem apenas dentro da funo, de forma que caso o programador determine uma funo e armazene um certo dado em uma
17
varivel local, ao trmino desta funo a varivel ser destruda, no sendo possvel recuperar seu valor. Mas como ento, pode-se recuperar um valor de uma funo? Para isto usamos o comando
caso, a varivel local esconder a varivel global, enquanto a funo estiver rodando. Um pouco confuso? Ento conra o exemplo abaixo:
9.2
Recursividade
A recursividade um tipo de iterao (repetio) na qual uma funo chama a si mesma repetidamente at que uma condio de sada seja satisfeita. Abaixo temos um exemplo de uma funo responsvel por calcular o fatorial de nmeros positivos inteiros e demonstra como uma funo pode chamar a ela mesma utilizando a propriedade recurssiva.
>>>print 9Q3 a 9Dftoril@QA Q3 E T >>>print 9R3 a 9Dftoril@RA R3 a PRXX >>>print 9S3 a 9Dftoril@SA S3 a IPH
Um passo-a-passo de como a funo executada, utilizando o comando
fatorial(n), para n = 3:
3 para o parmetro de entrada n. 2. O comando continua. 3. Nesta parte a funo pretende retornar o valor seja,
n*fatorial(n-1), ou
3*fatorial(2). Entretanto, ela ainda no possui o valor de fato2*fatorial(1). fatorial(1), a funo chama a si mesma mais
IF p um progrmD om um funo que neessite de trs rgumentosD e que forne som desses trs rgumentosF PF p um progrm que ree mtrul do usurio e informe o perodo que ele est e em qunto tempo ele ir se formrF QF p um progrmD om um funo que neessite de um rgumentoF e funo retorn o vlor de rtere 99D se seu rgumento for positivoD e 9x9D se seu rgumento for zero ou negtivoF
19
10
Mdulos
Pensando na reutilizao de cdigo, a linguagem Python j possui um conjunto de funes prontas para serem usadas ou agregadas em seus programas. Essas funes esto agrupadas em estruturas denominadas mdu los. Para a utilizao desses mdulos preciso utilizar o comando
import
nome_do_mdulo.
Aps ter importado o mdulo, qualquer funo pertencente a ele pode ser utilizada atravs do comando
nome_do_mdulo.funo(argumento).
possvel importar do mdulo apenas da funo desejada. Para isso, utilizamos o comando
estar disponvel para utilizao. Voc tambm pode denir o seu prprio mdulo. Deni-se as funes
desejadas e ao nal, voc salva o seu mdulo com a extenso .py . Exemplo: Digite em um editor de texto simples:
5swgFpy def indie@lturDpesoAX im a pesoG@lturBBPA return im def estdo@imAX if im ` PRFWX print 9xywev9 elif PRFW ` im ` PWFWX print 9iy e wes9 elif PWFW ` im ` RHX print 9vsqise yfishehi9 elif im b RHX print 9yfishehi9 elseX print 9weqy hiwes9 def pesoidel@pesoDlturAX a PHB@lturBBPA a PRFWB@lturBBPA
20
10.1
Mdulo
Math
cmath.
A distino
O mdulo
math
Existe um mdulo equivalente para nmeros complexos: a fundo a teoria dos complexos.
destes mdulos deve-se ao fato da maioria dos usurios no querer aprender Este mdulo contm funes de representao numrica, logaritimicas, exponenciais, hiperblicas, trigonomtricas e converses angulares e os valores retornados por este mdulo so pontos utuantes. As constantes tado. Abaixo, esto listadas algumas funes desse mdulo:
pi
- Retorna a raiz quadrada de x. - Converte o ngulo x de radianos para graus. - Converte o ngulo x de graus para radianos.
math.degrees(x) math.radians(x)
As funes trigonomtricas sin(x), cos(x), tan(x) e suas inversas tambm esto contidas nesse mdulo, alm das funes a seguir:
math.hypot(x,y)
21
math.atan2(y,x)
Os valores retornados das funes trigonomtricas esto em radiano. Para uma lista completa de funes neste mdulo, basta pedir um help(math). Exerccios:
IF pzer um luldor que exeute operes de dioD sutroD multiplioD divisoD qudrdoD uoD riz qudrdD senoD ossenoD tngenteD ftorilD inverso e mduloF PF p um progrm que o reeer um vlor de rioD retorne re e permetro do ruloF QF p um progrm que ree P vlores de tetos e retorneX
A e hipotenusF A ys vlores dos senos e ossenos dos Q ngulos do tringuloF A odos os vlores devero ser mostrdos em rdino e em grusF
10.2
Em algumas situaes ser necessrio que se armazene dados ou ento que se colete dados de algum arquivo, para isso existe um mdulo em python que comunica com o sistema operacional chamado io (input/output). demonstrado abaixo: Desse mdulo o comando principal o comando open, a sintaxe do programa est
>>>
Se estiver utilizando um sistema UNIX e o arquivo estiver na mesma pasta em que foi executado o interpretador no necessrio colocar o endereo do arquivo. E os modos de abertura so mostrados abaixo:
r (read)- Abrir o arquivo somente para leitura; a (append)- Abrir o arquivo somente para escrita, nesse modo o texto
somado ao arquivo;
w (write)- Abrir o arquivo somente para escrita, nesse modo o texto substituido A funo
22
write
agora como criar um arquivo com extenso txt, como todos os mtodos desse mdulo utliza a sintaxe mostrada acima, declaramos uma varivel que a recebe a funo
open.
existe um arquivo com o mesmo nome, pois se houver esse comando criar substituir esse arquivo por um novo.
w, chamado teste.txt,
atribumos a ele a varivel abrir e o fechamos com o mtodo .close. Depois criamos outra varivel que possui a qualidade de editiar o arquivo sem escrever por cima, ou seja, que utiliza o modo
mtodos existentes quando utilizamos o modo append. Primeiramente utilizaremos o mtodo .write, que serve para adicionar uma string ao nosso arquivo.
quivo foi interrompida. Com esses comandos foi adicionado a string Hello World! ento podemos usar o modo de leitura r.
Novamente, criamos uma varivel, no caso a varivel ler, s que desta vez atribumos a ela o modo de leitura, depois utilizamos o mtodo .readline() que l o arquivo linha a linha. Obs.: Depois de alcanar o nal do texto ele devolve uma string vazia, para voltar a ler o arquivo depois disso necessrio
23
que voc abra outra conexo com o arquivo. Agora que j sabemos criar, editar e ler um arquivo vamos criar uma lista de presena.
>>> 5gomeremos rindo o rquivo >>> rir a open@4presenFtxt4D4w4A >>> rirFlose@A >>> 5egor vmos esrever s funes responsveis pel esrit e leitur d noss list de presen >>> 5grimos um funo pr diionr o nome dos lunos list >>> def diionrluno@AX >>> >>> >>> >>> >>> >>> 4e nome do luno presente deve estr entre prnteses 4 5grimos um vrivel pr editr o rquivo luno a rwinput@4ul o nome do lunoc \n4A esrever a open@4presenFtxt4D44A esreverFwrite@lunoC4\n4A esreverFlose@A
>>> 5hepois rimos um funo pr ler os nomes n list >>> def lunopresente@AX >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> elseX print 4iyD digite s ou n4 4heve ser delrdo um inteiro orrespondente linh em que o luno est 4 5grimos um vrivel de pr ler o rquivo leitur a open@4presenFtxt4D4r4A 5xesse so vmos usr o mtodo redlines@A e triuEl um vrivelD dess form vrE ler a leiturFredlines@A print lerIXS luno a rwinput@4hesej ser todos os presentesc sGn \n4A if luno aa 4s4X for nomes in lerX print nomes elif luno aa 4n4X qulluno a input@4ul o nmero do lunoc \n4A print lerqullunoEI
24
10.3
10.3.1
O PySQLite um mdulo de Python que utiliza uma biblioteca em C chamada SQLite capaz de operar um banco de dados usando uma variante da linguagem SQL. Esta biblioteca, ao contrrio dos bancos de dados tradicionais, realiza a manipulao direta do arquivo de banco de dados, no necessitando de um servidor (ou um programa-servidor) que intermedie a manipulao do mesmo. Isto faz com que este mdulo seja o ideal para a manipulao de pequenos banco de dados, ou em aplicaes que necessitem de armazenamento interno de dados. Tambm possivel fazer o prottipo de um aplicativo usando o SQLite e em seguida migrar o cdigo para o uso em um banco de dados de maior capacidade como MySQL, PostgreSQL, Oracle, etc.
10.3.2
Comandos bsicos
import sqlite
A manipulao do banco de dados feita, no atravs de uma aplicao servidora especca para este m, mas sim manipulando diretamente o arquivo de banco de dados. Para isto, deve ser criado um objeto
connect
que funciona
onexo = sqliteQFonnet@9XmemoryX9A
Em seguida, deve-se criar um objeto cursor, que ser a varivel que nos permitir efetuar operaes sobre a base de dados. Isto pode ser feito chamando-se o mtodo
cursor().
ur = onexoFursor@9XmemoryX9A
Usando o cursor podemos inserir instrues em SQL para a manipulao do banco de dados, criando novas tabelas, localizando, inserindo, removendo e modicando entradas, como seria feito em um banco de dados tradicional.
25
def ritel@AX FFF sql a giei efvi onttos@id sxiqiD nome egreD fone egreA FFF urFexeute@sqlA
Inserindo um item no banco de dados:
def insereddos@AX FFF insnome = rwinput@9higite o nome do onttoX9A FFF insidde = rwinput@9higite idde do onttoX9A FFF urFexeute@9sxi sxy onttos evi @cDcDcA9D@indD insnomeD insiddeAA FFF onnetionFommit@A
Removendo um item no banco de dados:
def removerddos@AX FFF idrem = rwinput@9higite o indieX9A FFF urFexeute@9hivii pyw onttos rii idac9D@idremAA FFF onnetionFommit@A
Imprimindo os itens de um banco de dados:
def reuperddos@AX FFF sql = ivig B pyw onttos urFexeute @sqlA FFF result = urFfethll@A FFF FFF for ontto in resultX FFF print II FFF print dX c xomeX c sddeX c E c@onttoHDonttoIDonttoPA
Aps efetuar-se cada operao deve-se utilizar o mtodo as alteraes sejam gravadas no banco de dados. Exerccio:
commit()
para que
dever onter um nmero ndie @inteiroAD um nome @stringA e um telefone @stringAF iste progrm dever ter hilidde de inserirD remover e exiir s entrds registrdsF
11
Expresses booleanas
A lgebra
Ao leitor que no estiver acostumado com o ttulo acima, Expresses Booleanas so sentenas lgicas que seguem as leis da lgebra de Boole. Booleana trabalha com valores lgicos, interpretando esses valores atravs de nmeros binrios, ao oposto do decimal, utilizando o valor 0 para denir uma operao FALSA e o valor 1 para denir uma operao VERDADEIRA. As operaes entre valores lgicos so feitas de forma anloga s operaes feitas entre conjuntos de elementos, sendo que cada um desses elementos tratado como uma situao, podendo ser verdadeiros ou falsos. Em Python os seguintes valores so interpretados como falso:
26
False None 0 () []
Ou seja, os valores
vazias so denominadas falsas enquantos todos os outros valores possveis so interpretados como verdadeiro. Como na maioria das linguagens de programao, temos a possibilidade de utilizar a lgebra Booleana para realizar testes lgicos usados em estruturas de controle. Com esses testes podemos conferir a veracidade de operaes, alm de podermos montar funes condicionais e grama. Observemos o exemplo abaixo:
for, entre outros, que podem ser inseridos em qualquer lugar de seu pro-
>>> a T >>> a U >>> a RP >>> print ID aa T >>> print PD aa U >>> print QD aa T nd aa U >>> print RD aa U nd aa U >>> print SD not aa U nd aa U >>> print TD aa U or aa U >>> print UD aa U or aa T >>> print VD not @ aa U nd aa TA >>> print WD not aa U nd aa T
Teramos como sada o seguinte resultado:
27
operadores lgicos:
Operador
and :
or :
not :
uma expresso, o que era verdadeiro, se torna falso, e viceversa. As tabelas abaixo podem ajudar a claricar alguns desses conceitos: expression true and true true and false false and true false and false not true not false true or true true or false false or true false or false result true false false false false true true true true false
O programa abaixo mostra um exemplo de aplicao de Expresses Booleanas. Vamos dizer que precisamos de um programa que indique a situao de um aluno ao nal do ano, sendo que elas so assim:
Se o aluno obtiver nota maior ou igual e seis e no tiver mais de 10 faltas, ele passa direto; Se o aluno obtiver nota maior ou igual e seis e tiver mais de 10 faltas, ele ca de recuperao por falta; Se o aluno obtiver nota maior que quatro e menor que seis e no tiver mais de 10 faltas, ele ca de recuperao por nota; Se o aluno obtiver nota menor que quatro, ele repete direto;
28
Se o aluno obtiver nota maior que quatro e menor que seis e tiver mais de 10 faltas, ele repete por no obter nota e por excesso de faltas;
Para montar esse programa utilizamos as Expresses Booleanas, j que precisamos fazer a vericao de duas situaes, temos que vericar se o aluno tem nota e se ele tem presena.
>>> lunos a 9pred9D9uzn9D9gludio9D9ug9D9oson9D9qustvo9 >>> not a SFRD TFPD PFWD WFWD UFVD RFW >>> flts a WD SD ISD PD IID IP >>> ontdor a H >>> for luno in lunosX ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... \n ontdorCaI if notontdor ba TFH nd fltsontdor `a IHX print 9elunoX 9Dluno print 9xot (nlX 9Dnotontdor print 9pltsX 9Dfltsontdor print 9esltdoX ssou de no9 elif notontdor ba TFH nd fltsontdor b IHX print 9elunoX 9Dluno print 9xot (nlX 9Dnotontdor print 9pltsX 9Dfltsontdor print 9esltdoX eupero por flt9 elif notontdor ba RFH nd notontdor ` TFH nd fltsontdor `a IHX print 9elunoX 9Dluno print 9xot (nlX 9Dnotontdor print 9pltsX 9Dfltsontdor print 9esultdoX eupero por not9 elif notontdor ba RFH nd notontdor ` TFH nd fltsontdor b IHX print 9elunoX 9Dluno print 9xot (nlX 9Dnotontdor print 9pltsX 9Dfltsontdor print 9esultdoX epetiu direto por no oter not e por exesso de flts9 elif notontdor ` RFHX print 9elunoX 9Dluno print 9xot (nlX 9Dnotontdor print 9pltsX 9Dfltsontdor print 9esultdoX epetiu direto por not9
29
Apndice A - Mdulos
Existem outros mdulos que podem ser anexados sua biblioteca. Caso queira saber quais funes cada mdulo desse possui, basta digitar o comando abc aepack (Mac) aetools (Mac) aetypes (Mac) aifc al (IRIX) AL (IRIX) anydbm applesingle (Mac) array ast asynchat asyncore atexit audioop autoGIL (Mac) base64 BaseHTTPServer Bastion bdb binascii binhex bisect bsddb buildtools (Mac) bz2 calendar Carbon cd (IRIX) cfmle (Mac) cgi CGIHTTPServer cgitb chunk cmath cmd
help(nome_do_modulo).
30
code codecs codeop collections ColorPicker (Mac) colorsys commands (Unix) compileall compiler CongParser contextlib Cookie cookielib copy copy_reg cPickle cProle crypt (Unix) cStringIO csv ctypes curses datetime dbhash dbm (Unix) decimal DEVICE (IRIX) diib dircache dis distutils dl (Unix) doctest DocXMLRPCServer dumbdbm dummy_thread dummy_threading EasyDialogs (Mac) email encodings errno
31
exceptions fcntl (Unix) lecmp leinput ndertools (Mac) FL (IRIX) (IRIX) p (IRIX) fm (IRIX) fnmatch formatter fpectl (Unix) fpformat fractions FrameWork (Mac) ftplib functools future_builtins gc gdbm (Unix) gensuitemodule (Mac) getopt getpass gettext gl (IRIX) GL (IRIX) glob grp (Unix) gzip hashlib heapq hmac - hotshot htmlentitydefs htmllib HTMLParser httplib ic (Mac) icopen (Mac) imageop imaplib
32
imgle imghdr imp imputil inspect io itertools jpeg (IRIX) json keyword lib2to3 linecache locale - logging macerrors (Mac) MacOS (Mac) macostools (Mac) macpath macresource (Mac) mailbox mailcap marshal math md5 mhlib mimetools mimetypes MimeWriter mimify MiniAEFrame (Mac) mmap modulender msilib (Windows) msvcrt (Windows) multile multiprocessing mutex Nav (Mac) netrc new nis (Unix)
33
nntplib numbers operator optparse os ossaudiodev (Linux, FreeBSD) parser pdb pickle pickletools pipes (Unix) PixMapWrapper (Mac) pkgutil platform plistlib popen2 poplib posix (Unix) posixle (Unix) pprint pstats pty (IRIX, Linux) pwd (Unix) py_compile pyclbr pydoc Queue quopri random re readline repr resource (Unix) rexec rfc822 rlcompleter robotparser runpy sched ScrolledText (Tk) select
34
sets sgmllib sha shelve shlex shutil signal SimpleHTTPServer SimpleXMLRPCServer site smtpd smtplib sndhdr socket SocketServer spwd (Unix) sqlite3 ssl stat statvfs string StringIO stringprep struct subprocess sunau sunaudiodev (SunOS) SUNAUDIODEV (SunOS) symbol symtable sys syslog (Unix) tabnanny tarle telnetlib temple termios (Unix) test textwrap thread threading
35
time timeit Tix Tkinter token tokenize trace traceback tty (Unix) turtle types unicodedata unittest urllib urllib2 urlparse user UserDict UserList UserString uu uuid videoreader (Mac) W (Mac) warnings wave weakref webbrowser whichdb winsound (Windows) wsgiref xdrlib xml xmlrpclib ziple zipimport zlib
36
Referncias
[1] Labaki , Josu ,
Grupo Python,
[4] http://www.python.org.br/wiki/ListaDeExercicios
37