logo
Contato | Sobre...        
rebarba rebarba

Rodrigo Strauss :: Blog


Tutorial informal de Python, parte 3
>>> # Nessa terceira parte do nosso tutorial vamos ver como fazer funções
>>> # e conhecer alguns tipos de dados que fazem do Python o que ele é
>>> 
>>> # As funções são definidas usando-se a palavra chave def:
>>> def potencia(n, exp):
...   ret = 1
...   for x in range(exp):
...     ret *= n
...   return ret
... 
>>> potencia
<function potencia at 0x012DCB70>
>>> potencia(2, 2)
4
>>> potencia(2,10)
1024
>>> potencia(2,50)
1125899906842624L
>>> potencia(2,100)
1267650600228229401496703205376L
>>> potencia(2,0)
1
>>> f = potencia
>>> f
<function potencia at 0x012DCB70>
>>> f()
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
TypeError: potencia() takes exactly 2 arguments (0 given)
>>> f(3,10)
59049
>>> # Já vimos funções, agora vamos aos tipos de dados.
>>> # Primeiro a tupla, que é um agrupamento de variáveis,
>>> # funciona de forma parecida com um array:
>>> t = (1,2,3,4,5,6,7,8,9)
>>> t
(1, 2, 3, 4, 5, 6, 7, 8, 9)
>>> t[0]
1
>>> t[9]
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
IndexError: tuple index out of range
>>> # ooops
>>> t[8]
9
>>> # Os recursos de índice negativo e de slicing que funcionam
>>> # com o tipo string também funcionam com tuplas, assim como
>>> # com qualquer tipo que siga o conceito "sequence"
>>> t[-1]
9
>>> t[len(t)/2:]
(5, 6, 7, 8, 9)
>>> # outro recurso interessante das tuplas é o "desempacotamento automático":
>>> t = (1,2,3) 
>>> t
(1, 2, 3)
>>> a,b,c = t
>>> a
1
>>> b
2
>>> c
3
>>>
>>> # Agora vamos ao list, que funciona de forma parecida com a tupla
>>> l = [1,2,3,4,5,6,7,8]
>>> l
[1, 2, 3, 4, 5, 6, 7, 8]
>>> type(t)
<type 'tuple'>
>>> type(l)
<type 'list'>
>>> # Note a diferença na declaração, tuplas com () e listas com []
>>> # Como o parênteses é também usado para agrupar expressões, uma
>>> # sintaxe especial é necessária para tuplas com 1 elemento:
>>> type([1])
<type 'list'>
>>> type((1))
<type 'int'>
>>> type((1,))
<type 'tuple'>
>>> # Você já deve ter reparado que o "for" no Python é equivalente
>>> # ao "foreach" de outras linguagens:
>>> for x in [0,1,2,3]:
...   print x
...   
0
1
2
3
>>> # Para reporduzir o comportamento do "for" com contador numérico
>>> # usamos a função range, que gera uma lista com os números a serem 
>>> # percorridos:
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for x in range(10):
...   print x,
... 
 0 1 2 3 4 5 6 7 8 9
>>> # Antes que você pergunte, a mágica de fazer o print exibir os
>>> # números todos na mesma linha foi feita colocando uma vírgula
>>> # no fim da linha do print
>>> 
>>> # A diferença entre a tupla e a lista é que a tupla é imutável.
>>> t
 
(1, 2, 3, 4, 5, 6, 7, 8, 9)
>>> t[2] = 10
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> l[2] = 20
>>> l
[1, 2, 20, 4, 5, 6, 7, 8]
>>> # Além disso, a lista pode ser usada como array, como fila e
>>> # como pilha
>>> l = []
>>> l
[]
>>> l.append(5)
>>> l.append(10)
>>> l
[5, 10]
>>> del l[0]
>>> l
[10]
>>> l = [] # vamos usar uma lista como pilha
>>> l.append(1)
>>> l.append(2)
>>> l.append(3)
>>> l
[1, 2, 3]
>>> l.pop()
3
>>> l.pop()
2
>>> l.pop()
1
>>> l.pop()
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
IndexError: pop from empty list
>>> l
[]
>>> range(10, 20, 2) # inicio (inclusive), fim (exclusive), passo
[10, 12, 14, 16, 18]
>>> l = range(10, 20, 2)
>>> l
[10, 12, 14, 16, 18]
>>> l.index(12) #procura um item e retorna qual seu índice
1
>>> del l[l.index(12)] # removendo o item
>>> l
[10, 14, 16, 18]
>>> t
(1, 2, 3, 4, 5, 6, 7, 8, 9)
>>> l.extend(t) # extendendo a lista com outra sequência (lista ou tupla)
>>> l
[10, 14, 16, 18, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> l = []
>>> l.append(1)
>>> l.append(2)
>>> l.append(3)
>>> l
[1, 2, 3]
>>> l.pop(0) # dessa forma eu retiro o primeiro item da lista. Agora eu tenho uma fila
1
>>> l.pop(0)
2
>>> l.pop(0)
3
>>> l.pop(0)
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
IndexError: pop from empty list
>>> l
[]
>>> l = range(10)
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> l.reverse()
>>> l
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> l.sort()
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> l.sort(reverse=True)
>>> l
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>>

Em 23/08/2007 22:42, por Rodrigo Strauss


  
 
 
Comentários
rebarba rebarba
  ::::