Sei sulla pagina 1di 34

Claudio Esperana e

Paulo R. Cavalcanti
Python:
Tipos Bsicos
Python como calculadora

O Interpretador python pode ser usado como


calculadora

Por exemplo, as quatro operaes aritmticas so


denotadas pelos smbolos

+ adio

- subtrao

* multiplicao

/ diviso
Python como calculadora
>>> 10
10
>>> # Um comentrio precedido do caracter "#"
... # Comentrios so ignorados pelo interpretador
... 10+5
15
>>> 10-15 # Comentrios podem aparecer tambm aps cdigo
-5
>>> 10!
!0
>>> 10"!
!
>>> 10"-! # #i$iso inteira retorna o piso
-%
>>> 10&! # 'esto de di$iso inteira simboli(ado por &
1
Tipos de dados

So categorias de valores que so processados de


forma semelhante

Por exemplo, nmeros inteiros so processados de


forma diferente dos nmeros de ponto flutuante
(decimais) e dos nmeros complexos

Tipos primitivos: so aqueles j embutidos no ncleo


da linguagem

Simples: nmeros (int, long, float, complex) e cadeias


de caracteres (strings)

Compostos: listas, dicionrios, tuplas e conjuntos

Tipos definidos pelo usurio: so correspondentes a


classes (orientao objeto)
Variveis

So nomes dados a reas de memria

Nomes podem ser compostos de algarismos,letras ou _

O primeiro caractere no pode ser um algarismo

Palavras reservadas (if, while, etc) so proibidas

Servem para:

Guardar valores intermedirios

Construir estruturas de dados

Uma varivel modificada usando o comando de atribuio:


Var = expresso

possvel tambm atribuir a vrias variveis simultaneamente:


var1,var2,...,varN = expr1,expr2,...,exprN
Variveis
>>> a=1
>>> a
1
>>> a=2*a
>>> a
2
>>> a,b=3*a,a
>>> a,b
(6,2)
>>> a,b=b,a
>>> a,b
(2,6)
Variveis

Variveis so criadas dinamicamente e destrudas


quando no mais necessrias, por exemplo, quando
saem fora de escopo (veremos isso mais tarde)

O tipo de uma varivel muda conforme o valor


atribudo, i.e., int, float, string, etc.

No confundir com linguagens sem tipo

Ex.:
>>> a ="1"
>>> b = 1
>>> a+b
Traceback (most recent call last):
ile "!st"in>", line 1, in #
T$%e&rror: cannot concatenate 'str' an" 'int' ob(ects
Nmeros

H vrios tipos numricos que se pode usar em python

Int: nmeros inteiros de preciso fixa

1 , 2 , 15 , -19

Long: nmeros inteiros de preciso arbitrria

1L , 10000L , -9999999L

Floats: nmeros racionais de preciso varivel

1.0 , 10.5 , -19000.00005 , 15e-5

Complex: nmeros complexos

1+1j , 20j , 1000+100J


Nmeros inteiros

Os ints tm preciso fixa ocupando tipicamente uma


palavra de memria

Em PC's so tipicamente representados com 32 bits


(de -2
31
-1 a 2
32
)

Os nmeros inteiros de preciso arbitrria (longs) so


armazenados em tantas palavras quanto necessrio

Constantes do tipo long tm o sufixo L ou l

Longs so manipulados bem mais lentamente que ints

Quando necessrio, clculos usando ints so convertidos


para longs
Nmeros inteiros
>>> a=2**3) * +otencia,-o
>>> a
1).3./102/
>>> b=a*1)))
>>> b
1).3./102/)))1
>>> b21)))
1).3./102/1
Nmeros inteiros

Constantes podem ser escritas com notao idntica


usada em C

Hexadecimal: preceder dgitos de 0x

Octal: preceder dgitos de 0

Ex.:
>>> 022
18
>>> 0x10
16
>>> 0x1f
31
Nmeros de ponto flutuante

So implementados como os double's da linguagem C


tipicamente usam 2 palavras

Constantes tm que possuir um ponto decimal ou serem


escritas em notao cientfica com a letra e (ou E)
precedendo a potncia de 10

Ex:
>>> 1) * inteiro
1)
>>> 1)3) * %onto fl4t4ante
1)3)
>>> 55e3
55)))3)
>>> 55e63
)3)55))))))))))))))7
Nmeros complexos

Representados com dois nmeros de ponto flutuante: um para a


parte real e outro para a parte imaginria

Constantes so escritas como uma soma sendo que a parte


imaginria tem o sufixo j ou J

Ex.:
>>> 1+2j
(1+2j)
>>> 1+2j*3
(1+6j)
>>> (1+2j)*3
(3+6j)
>>> (1+2j)*3j
(-6+3j)
Strings

So cadeias de caracteres

Constituem outro tipo fundamental do python

Constantes string so escritas usando aspas simples ou duplas

Ex.: "a" o4 'a'

O operador + pode ser usado para concatenar strings

Ex.: "a"+"b" o mesmo !e "ab"

" operador # pode ser !sado para repetir strin$s

%x.: "a"*1) o mesmo !e "aaaaaaaaaa"


Strings

Python usa a tabela de caracteres default do S.O.

Ex.: ASCII, UTF-8

Caracteres no imprimveis podem ser expressos usando notao


barra-invertida (\)

\n o mesmo que new line

\r o mesmo que carriage return

\t o mesmo que tab

\b o mesmo que backspace

\\ o mesmo que \

\x41 o mesmo que o caractere cujo cdigo hexadecimal


41 (A maisculo)
Strings
>>> "ab8r""
'ab8r"'
>>> %rint "ab8r"" * %rint e9ibe chars n-o im%rim:;eis
"b
>>> %rint "abc8t""
abc "
>>> %rint "abc8n""
abc
"
>>> %rint "abc88n""
abc8n"
>>> %rint "ab8bc"
ac
>>> %rint "89/189<1"
<:
Strings

A notao barra-invertida (\) pode ser desabilitada


desde que a constante string seja precedida por um r
(erre minsculo)

So chamadas strings raw (cruas)

Ex.:
>>> %rint "abc8nc"8tef"
abc
c" ef
>>> %rint r"abc8nc"8tef"
abc8nc"8tef
Strings

Constantes string podem ser escritas com vrias linhas


desde que as aspas no sejam fechadas e que cada
linha termine com uma barra invertida

Ex.:
>>> %rint "abc"8n8
333 ef=h8n8
333 i(k"
abc"
ef=h
i(k
>>> %rint "abc"8
333 ef=h8
333 i(k"
abc"ef=hi(k
>>>
Strings

Tambm possvel escrever constantes string em vrias linhas


incluindo as quebras de linha usando trs aspas como
delimitadores

Ex.:
>>> %rint """
>m ti=re
"ois ti=res
tr?s ti=res"""
>m ti=re
"ois ti=res
tr?s ti=res
>>> %rint '''abc"
ef=h'''
abc"
ef=h
Strings ndices

Endeream caracteres individuais de uma string

Notao: string[ndice]

O primeiro caractere tem ndice 0

O ltimo caractere tem ndice -1

Ex.:
>>> a = "abc"e"
>>> a@)A
'a'
>>> a@61A
'e'
Strings !atias "slices#

Notao para separar trechos de uma string

Notao: string[ndice1:ndice2]

Retorna os caracteres desde o de ndice1 (inclusive) at


o de ndice2 (exclusive)

Se o primeiro ndice omitido, assumido 0

Se o ltimo ndice omitido, assumido o fim da string


Strings !atias "slices#
>>> a
'abc"e'
>>> a@):2A
'ab'
>>> a @2:A
'c"e'
>>> a@:A
'abc"e'
>>> a@61:A
'e'
>>> a@:61A
'abc"'
$xpress%es &ooleanas

Tambm chamadas expresses lgicas

Resultam em verdadeiro (True) ou falso (False)

So usadas em comandos condicionais e de repetio

Servem para analisar o estado de uma computao e permitir escolher


o prximo passo

Operadores mais usados

Relacionais: > , < , ==, !=, >=, <=

Booleanos: and, or, not

Avaliao feita em Curto-circuito

Expresso avaliada da esquerda para a direita

Se o resultado (verdadeiro ou falso) puder ser determinado sem


avaliar o restante, este retornado imediatamente
$xpress%es &ooleanas
>>> 1==1
Tr4e
>>> 1==2
alse
>>> 1==1 or 1==2
Tr4e
>>> 1==1 an" 1==2
alse
>>> 1!2 an" 2!3
Tr4e
>>> not 1!2
alse
>>> not 1!2 or 2!3
Tr4e
>>> not (1!2 or 2!3)
alse
>>> "alo" an" 1
1
>>> "alo" or 1
'alo'
$xpress%es &ooleanas

As constantes True e False so apenas smbolos


convenientes

Qualquer valor no nulo visto como verdadeiro


enquanto que 0 (ou False) visto como falso

O operador or retorna o primeiro operando se &or


'ista como verdadeiro, caso contr(rio retorna o
se$!ndo

" operador and retorna o primeiro operando se &or


'ista como falso, caso contr(rio retorna o se$!ndo

"peradores relacionais so a'aliados antes de not,


B4e a'aliado antes de and, !e a'aliado antes
de or
$xpress%es &ooleanas
>>> ) or 1))
1))
>>> alse or 1))
1))
>>> "abc" or 1
'abc'
>>> 1 an" 2
2
>>> ) an" 3
)
>>> alse an" 3
alse
>>> 1 an" 2 or 3
2
>>> ) or 2 an" 3
3
>>> 1 an" not )
Tr4e
!un'%es $m&utidas

Alm dos operadores, possvel usar funes para


computar valores

As funes podem ser definidas:

Pelo programador (veremos + tarde)

Em mdulos da biblioteca padro

Por default: so as funes embutidas (built-in)

Na verdade, fazem parte do mdulo __builtins__, que sempre


importado em toda aplicao

Ex.:

abs(x) retorna o valor absoluto do nmero x

chr(x) retorna uma string com um nico caractere cujo


cdigo ASCII x

ord(s) retorna o cdigo ASCII do caractere s


!un'%es $m&utidas
>>> abs (1))
1)
>>> abs (615)
15
>>> chr (57)
'C'
>>> chr (55)
'c'
>>> or" ('aD)
5.
(mportando m)dulos

Muitas funes importantes so disponibilizadas em


mdulos da biblioteca padro

Ex.: o mdulo math tem funes transcendentais como


sin, cos, exp e outras

Um mdulo pode conter no s funes mas tambm


variveis ou classes

Por exemplo, o mdulo math define a constante pi

Para usar os elementos de um mdulo, pode-se usar o


comando import

Formatos:

import modulo

from mo"4lo import nome,...,nome

from mo"4lo import *


(mportando m)dulos

)or exemplo:

from math im%ort *


* im%orta to"os os elementos "o mE"4lo math

from math im%ort sin


* im%orta a%enas a f4n,-o sin

im%ort math
* im%orta o mE"4lo math como 4m to"o
* (to"os os elementos t?m B4e ser cita"os
* %rece"i"os %or math.)
(mportando m)dulos
>>> im%ort math
>>> a = sin(3))
Traceback (most recent call last):
ile "!st"in>", line 1, in #
Fame&rror: name 'sin' is not "efine"
>>> a = math3sin(3))
>>> from math im%ort sin
>>> a = sin(3))
>>> %rint a
6)3500)3162/)53
>>> a = sin(ra"ians(3)))
Traceback (most recent call last):
ile "!st"in>", line 1, in #
Fame&rror: name 'ra"ians' is not "efine"
>>> from math im%ort *
>>> a = sin(ra"ians(3)))
>>> a
)3/555555555555555/
$xplorando *)dulos
>>> import math
>>> help(math.cos)
Help on built-in function cos in module math:
cos(...)
cos(x)

Return the cosine of x (measured in radians).
(END)

Pressiona-se q para retornar ao interpretador.


!un'%es Simples

Funes podem ser criadas em python de uma forma


bastante similar s funes matemticas.

A forma geral :
def (argumentos):
cdigo
return resultados

Exemplo: f(x) = x
def f (x):
return x * x
print f(2)
!un'%es para resolver pro&lemas

Calcule a distncia percorrida por um barco que deve atravessar um


rio, de uma margem para outra. Sabe-se a velocidade do barco, a
velocidade do rio (perpendicularmente velocidade do barco) e a
largura do rio.
import math
def boatDistance ( bv, rv, w):
bt = w/float(bv) # tempo que o barco leva na travessia
dr = rv*bt # distncia percorrida ao longo da margem
return math.sqrt (w*w+dr*dr) # distncia total
boat_velocity = input ( Digite a velocidade do barco: )
river_velocity = input ( Digite a velocidade do rio: )
river_width = input ( Digite a largura do rio: )
print boatDistance (boat_velocity, river_velocity, river_width)