Escolar Documentos
Profissional Documentos
Cultura Documentos
Tut Python 2k100127 PDF
Tut Python 2k100127 PDF
Centro Tecnolgico
Escola de Engenharia
Curso de Engenharia de Telecomunicaes
Programa de Educao Tutorial
Grupo PET-Tele
Sumrio
1 Caractersticas bsicas da linguagem
2 Obteno e instalao
3 Variveis
4 Strings
4.1
Manipulando Strings
3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 Operaes matemticas
6 Entrada de Dados
7 Estruturas de controle
7.1
While . . . . . . . .
7.2
If . . . . . . . . . . .
7.3
For . . . . . . . . . .
7
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8 Funes
8.1
Variveis em funes
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
8.2
Recursividade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
8.3
Mdulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
9 Listas
13
9.1
15
9.2
9.3
9.4
16
9.5
16
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
9.6
Range
10 Expresses booleanas
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .
15
16
17
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. Mquinas seguem instrues determinadas
pela energizao (ou no) de determinadas partes em 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.
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
Variveis
Variveis so formas de se armazenar dados para uso posterior. Estas podem ser classicadas em 3 tipos bsicos (existem outros, que sero abordados mais a frente):
int
- Um nmero inteiro
oat
- Um ponto utuante
string
ser armazenado identica o tipo da varivel para armazen-lo. Por exemplo, caso desejese atribuir o valor 3 varivel
inteiro(tipo
int ").
A,
basta digitar
A=3.
um
Por outro lado, se o valor a ser armazenado fosse 3,2 que um dado
A=3.2.
Python, A=3 e B=3.0 so variveis de tipos diferentes e isto deve ser levado em conta ao
se realizar certos tipos de manipulaes de dados.
Strings
String um tipo de objeto formado por uma sequncia imutvel de caracteres que nos
permite trabalhar com textos. Exemplo:
>>>
>>>
a = Bom Dia
print a
Bom Dia
Percebemos que elas so delimitadas por aspas, podemos utilizar tanto aspas duplas
como as simples. Se utilizarmos aspas duplas, como o mostrado no exemplo acima, podemos usar as simples para aplicaes dentro do texto que estamos escrevendo, o contrrio
tambm verdadeiro.
Exemplo:
>>>
>>>
\n.
Este por sua vez, tem a funo de pular uma linha e escrever o texto, que est depois
do
\n,
nessa nova linha. Tanto isso verdade que no mesmo exemplo, quando usamos o
comando print mostrada a parte do texto que diz: Cinquenta anos em cinco., impresso
na linha seguinte.
Outro artifcio parecido com
>>>
Botafogo
Vasco
Fluminense
Flamengo '
>>>
print a
Manipulando Strings
4.1
Pelo fato de uma string ser uma sequncia imutvel, isso nos d a possibilidade de manipularmos essa sequncia, consideremos o exemplo abaixo:
>>>
>>>
a = 'matemtica'
a[2]+a[-5]+a[-4:]
'ttica'
Isso nos mostra que uma string segue uma determinada indexao onde cada caractere
assume um endereo que, pode ser acessado colocando o nome da varivel, que contm a
string, e aps, entre os colchetes, o endereo da clula que contm o caractere desejado.
Existe tambm um recurso conhecido como operador %, que serve para formatar as
strings, basicamente so trs os tipos de formatao que temos:
%s
%d
%f
Observao:
As trs formataes acima relacionadas so normalmente para aplicaes em uma frase
destinada a um print.
Exemplo:
>>>
>>>
compra= 'ma'
tipo='verde'
>>>
>>>
quilos = 1,5
print 'Maria comprou %f quilos de %s %s .' %(quilos,compra,tipo)
>>>
>>>
num=245.47876749
print '%.2f ' %(num)
245.48
Percebemos que Python fez uma aproximao do nmero real, possibilitando que o
resultado de uma futura operao seja o mais preciso possvel.
Operaes matemticas
Alm de ser uma poderosa linguagem de programao, Python sabe lidar bem com
matemtica.
>>>2+3
5
Subtrao:
>>>2-3
-1
Multiplicao:
>>>2*3
6
Diviso:
>>>2/3
0
Na diviso, pode-se optar por resultados como nmeros inteiros (ou o inteiro mais
prximo) ou resultado exato (um ponto utuante). Para isso, deve-se fornecer um inteiro
(para se obter um inteiro como resultado) ou um ponto utuante (para se obter o resultado exato).
Diviso:
>>>2.0/3.0
0.66666666666666663
A operao aritimtica de potenciao tambm pode ser feita, assim como a sua inversa, a radiciao.
Potenciao:
>>>
2**3
1/n
>>>8**(1.0/3.0)
2.0
8
Entrada de Dados
Atravs do comando
string
>>>
raw_input
len() .
string.
O tamanho da
>>>
nome
'Pedro'
>>>
len(nome)
>>>
>>>
nome + sobrenome
'PedroAlbuquerque'
>>>nome*3
'PedroPedroPedro'
>>>
input():
>>>
>>>
type(idade)
<type 'int'>
>>>
type(altura)
<type 'oat'>
string,
podemos
Observao: O dado inserido pelo usurio j dinamicamente tipado. Para saber qual o
tipo da varivel atribuda, basta digitar o comando
type()
Estruturas de controle
7.1
While
loop while
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
>>>
...
#continuao do programa
>>>
resultado = 1
>>>
>>>
>>>
num = num_org
>>>
...
...
num = num - 1
...
>>>
>>>
O nmero 6! : 720
Se a condio estabelecida no
while
7.2
loop
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
...
#bloco de comandos 1
...elif
...
#bloco de comandos 2
...else:
...
#bloco de comandos 3
Nessa estrutura podemos utilizar quantas condies forem necessrias, para isso, basta
repertimos o
elif
>>>num
>>>adv
= 23
= 0
>>>while
adv != num:
...
...
...
...
...
...
else:
...
...
>>>Insira
um nmero:
7.3
tag
For
O comando
for,
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.
loop for far com que a varivel contador aponte para um diferente valor dentro da lista
range e logo em seguida imprima esse valor.
2
3
4
5
6
7
8
9
10
for tambm pode ser aplicada com o uso de strings, observemos o caso abaixo:
>>>
>>>
...
Funes
>>>
if a < 0:
...
>>>
a = -a
if b < 0:
...
>>>
b = -b
if a == b:
...
...
...
Funo 2:
>>>def
compara_absolutos(a,b):
...
" Essa funo retorna se os valores absolutos das variveis requeridas so iguais
...
if a < 0:
...
a = -a
...
if b < 0:
...
b = -b
...
if a == b:
...
...
else:
...
...
Abaixo apresentamos a sintaxe necessria para criao de funes utilizando a linguagem Python.
>>>def
funcao(variavel1,variavel2,...,variavelN):
...
bloco de comandos
...
return
que ao chamar uma funo, podemos passar a esta alguns parmetros (valores ou
strings ): funcao(1234,"pet-tele","UFF-1234"),
oats.
10
8.1
Variveis em funes
Em geral, quando estamos eliminando cdigo repetitivo por meio de funes tambm
temos algumas variveis repetidas neste cdigo.
return
Um pouco confuso?
>>>a
= 4
>>>def
print_func():
...
a = 17
...
...
Agora chame a funo
print_func()
print,
>>>print_func()
in print_func a = 17
'a = ', a
a = 4
Com isto, podemos concluir que variveis criadas dentro de uma funo (variveis
locais), no afetam as variveis que esto fora dela (variveis globais). As variveis locais
existem apenas dentro do espao limitado pela funo, no podendo assim nem ser usada,
nem afetar nada fora deste espao.
8.2
Recursividade
>>>def
...
...
...
fatorial(n):
if n <= 1:
return 1
return n * fatorial(n - 1)
11
...
>>>print
'2! = ',fatorial(2)
2! = 2
'3! = ',fatorial(3)
3! - 6
'4! = ',fatorial(4)
4! = 24::
'5! = ',fatorial(5)
5! = 120
fatorial(n),
para n = 3:
fatorial(3),
parmetro de entrada n.
2. O comando
if
n*fatorial(n-1), ou seja, 3*fatorial(2). Entretanto, ela ainda no possui o valor de fatorial(2). Para isso, a funo
fatorial novamente chamada com n = 2, retornando o valor 2*fatorial(1).
calcul-lo.
5. Com isto, atingimos a condio de sada do
if
fatorial
e ento
o valor retornado 1.
Vamos fazer uma retrospectiva do que aconteceu ao se executar esta funo:
fatorial(3)
3 * fatorial(2)
3 * 2 * fatorial(1)
3 * 2 * 1 = 6
8.3
Mdulos
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).
12
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:
#IMC.py
def indice(altura,peso):
imc = peso/(altura**2)
return imc
def estado(imc):
if imc < 24.9:
print 'NORMAL'
elif 24.9 < imc < 29.9:
print 'PESO A MAIS'
elif 29.9 < imc < 40:
print 'LIGEIRA OBESIDADE'
elif imc > 40:
print 'OBESIDADE'
else:
print 'MAGRO DEMAIS'
def pesoideal(peso,altura):
a = 20*(altura**2)
b = 24.9*(altura**2)
print 'Seu peso ideal se encontra entre %f e %f ' %(a,b)
Listas
lista = [9,8,7]
O endereamento dos componentes comea no 0.
determinado elemento da lista, basta cham-lo:
ao elemento de posio x na lista.
Alguns comandos referentes a listas:
len(lista)
13
lista[x].
lista.append(x)
lista.extend([6,5,4])
lista[y]= x
En-
>>>
meses = ['Janeiro', 'Fevereiro', 'Maro', 'Abril', 'Maio', 'Junho', 'Julho','Agosto', 'Setembro', 'Outubro', 'Novembro',
'Dezembro']
>>>
while 1:
...
...
...
print O ms , meses[qual_mes - 1]
>>>
Escolha um ms (1-12)? 5
O ms Maio
>>>
Escolha um ms (1-12)? 12
O ms Dezembro
>>>
Escolha um ms (1-12)?
string, se armazensse-
loop.
while
loop,
if, nos devolvido o nome do ms 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
14
9.1
Para inserir um novo dado a uma lista qualquer, chamamos uma mtodo chamado
pend :
>>>teste
.ap-
= []
>>>teste.append('zero')
>>>teste.append('um')
>>>teste
['zero','um']
append
Infelizmente o comando .
.extend :
>>>teste.extend(['dois','trs',]
>>>soma
= ['quatro','cinco']
>>>teste
+= soma
>>>teste
+ ['seis']
['zero','um','dois','trs','quatro','cinco','seis']
>>>teste*2
[zero','um','dois','trs','quatro','cinco','seis',zero','um','dois','trs','quatro','cinco','seis']
Observao: o cdigo
9.2
Ao chamarmos a lista
teste
dando com todos os elementos da lista. Podemos tambm imprimir somente alguns valores
de dentro da lista, necessitando para isso apenas indicar o local:
>>>for
...
for.
valor in teste:
print valor
...
zero
um
dois
trs
15
quatro
9.3
A funo
.index
string
cdigo:
lista.index("quatro")
Observao:
9.4
del ,
referenciando o
index,
>>>del
teste[3]
>>>lista
>>>print
string :
+= ['um']
'Antes a lista 'teste' era: ',teste
>>>teste.remove("um")
>>>print
9.5
16
len() ,
como exemplicado no
9.6
Range
A funo
range
gra de escrita:
range (inicio,m)
importante observar que o nmero nalizador descrito acima no includo no vetor,
por exemplo:
>>>vetor
= range(1,11)
vetor
O cdigo acima nos dar como sada o vetor: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] . Em outras
palavras o ltimo nmero excludo do vetor, portanto o 11 no entra na composio
deste.
A funo
range
maior que o nmero nal, bem como quando apenas o nmero nal passado para a
funo, portanto so vlidas as contrues:
>>>
range(1, 10)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
range(-32, -20)
[-32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, -21]
>>>
range(5,21)
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
>>>
range(5)
[0, 1, 2, 3, 4]
>>>
range(21, 5)
[ ]
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
>>>range(0,24,4)
[0, 4, 8, 12, 16, 20, 24]
10
Expresses booleanas
Ao leitor que no estiver acostumado com o ttulo acima, Expresses Booleanas so sentenas lgicas que seguem as leis da lgebra de Boole. A lgebra Booleana trabalha com
valores lgicos, interpretando esse valores atravs de nmeros binrios, ao oposto do dec-
17
imal, 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:
False None 0
() []
Ou seja, os valores
nadas 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
if, laos de repetio while e for, entre outros, que podem ser inseridos em
>>>
a = 6
>>>
b = 7
>>>
c = 42
>>>
print 1, a == 6
>>>
print 2, a == 7
>>>
print 3, a == 6 and b == 7
>>>
print 4, a == 7 and b == 7
>>>
>>>
print 6, a == 7 or b == 7
>>>
print 7, a == 7 or b == 6
>>>
>>>
1 True
2 False
3 True
4 False
5 True
6 True
7 False
8 True
9 False
Para entender a lgica do que foi feito acima, devemos relembrar alguns conceitos de
lgebra booleana. Abaixo temos uma breve descrio sobre os operadores lgicos:
18
Operador
and ":
Operador
or ":
Operador
not ":
Resultado
true
false
false
false
not true
false
not false
true
true or true
true
true or false
true
false or true
true
false or false
false
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 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 precisaremos utilizar 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.
>>>
alunos = ['Fred','Suzana','Claudio','Puga','Robson','Gustavo']
>>>
19
>>>
>>>
contador = 0
>>>
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
print 'Resultado: Repetiu direto por no obter nota e por excesso de faltas'
elif nota[contador] < 4.0:
...
...
...
...
...
"\n
...
contador+=1
20
Referncias
[1] Labaki , Josu ,
Solteira.
[2]
, 2009.
21