logo
Contato | Sobre...        
rebarba rebarba

Rodrigo Strauss :: Blog

follow us in feedly

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
Algo a dizer?
Nome:


Site:


E-mail:


Escreva o número vinte e seis:


 Não mostre meu e-mail no site, não serve pra nada mesmo...

Comentário





Os comentários devem ser sobre assuntos relativos ao post, eu provavelmente apagarei comentários totalmente offtopic. Se quiser me enviar uma mensagem, use o formulário de contato. E não esqueça: isso é um site pessoal e eu me reservo o direito de apagar qualquer comentário ofensivo ou inapropriado.
rebarba rebarba
  ::::