sábado, 22 de outubro de 2011

Mais Estruturas de Controle através de exemplos

Como estruturas de controle são praticamente parecidas nas linguagens, abaixo encontram-se exemplos e pequenas observações sobre o assunto:

1 - If:
>>> x = int(raw_input("Please enter an integer: "))
Please enter an integer: 42
>>> if x < 0:
...      x = 0
...      print 'Negative changed to zero'
... elif x == 0:
...      print 'Zero'
... elif x == 1:
...      print 'Single'
... else:
...      print 'More'
...
More
2 - For:
>>> a = ['cat', 'window', 'defenestrate']
>>> for x in a:
...     print x, len(x)
Abaixo, um exemplo que altera a lista enquanto ocorre o loop:
>>> a = ['cat', 'window', 'defenestrate'] 
...for x in a[:]: # utilizando uma cópia da lista
...    if len(x) > 6: a.insert(0, x)
...
>>> a
['defenestrate', 'cat', 'window', 'defenestrate']
3 - Função Range:

Itera sobre uma sequência de números.
>>> range(5, 10)
[5, 6, 7, 8, 9]
>>> range(0, 10, 3) # entre 0 e 10, de 3 em 3
[0, 3, 6, 9]
>>> range(-10, -100, -30) # entre -10 e -100, de -30 em -30
[-10, -40, -70]
Utilizando a função em um for:
>>> a = ['Mary', 'had', 'a', 'little', 'lamb']
>>> for i in range(len(a)):
...     print i, a[i]
4 - Break e Else:
>>> for n in range(2, 10):
...     for x in range(2, n):
...         if n % x == 0:
...             print n, 'equals', x, '*', n/x
...             break
...     else:
...         print n, 'is a prime number'
.
5 - Continue:
>>> for n in range(2, 10):
...     for x in range(2, n):
...         if n % x == 0:
...             continue'
.
6 - Pass:
>>> while True:
...     pass  # aguarda por interrupção  (Ctrl+C)
...
>>> class MyEmptyClass:
...     pass
No próximo post, falaremos sobre funções em Python.

Até lá.

quinta-feira, 20 de outubro de 2011

Listas e Estruturas de Controle em Python

Python possui algumas estruturas usadas para agrupar tipos e List é o mais versátil deles, não sendo necessário que uma lista possua tipos iguais.

>>> a = ['spam', 'eggs', 100, 1234]
>>> a
['spam', 'eggs', 100, 1234]

Como strings, listas também utilizam índices, porém, são mutáveis:

>>> a[0]
'spam'
>>> a[3]
1234
>>> a[-2]
100
>>> a[1:-1]
['eggs', 100]
>>> a[:2] + ['bacon', 2*2]
['spam', 'eggs', 'bacon', 4]
>>> 3*a[:3] + ['Boo!']
['spam', 'eggs', 100, 'spam', 'eggs', 100, 'spam', 'eggs', 100, 'Boo!']
>>> a[:]
['spam', 'eggs', 100, 1234]
>>> a[2] = a[2] + 23
>>> a
['spam', 'eggs', 123, 1234]
>>> # Substituir alguns itens:
... a[0:2] = [1, 12]
>>> a
[1, 12, 123, 1234]
>>> # Remover alguns:
... a[0:2] = []
>>> a
[123, 1234]
>>> # Inserir alguns:
... a[1:1] = ['bletch', 'xyzzy']
>>> a
[123, 'bletch', 'xyzzy', 1234]
>>> # Inserir a própria lista:
>>> a[:0] = a
>>> a
[123, 'bletch', 'xyzzy', 1234, 123, 'bletch', 'xyzzy', 1234]
>>> # Limpar a lista:
>>> a[:] = []
>>> a
[]

Também temos a funão len():

>>> a = ['a', 'b', 'c', 'd']
>>> len(a)
4

Para mostrar como listas em Python é versátil, também podemos criar listas contendo outras listas:

>>> q = [2, 3]
>>> p = [1, q, 4]
>>> len(p)
3
>>> p[1]
[2, 3]
>>> p[1][0]
2
>>> p[1].append('xtra')     # See section 5.1
>>> p
[1, [2, 3, 'xtra'], 4]
>>> q
[2, 3, 'xtra']

Fluxo de Controle

>>> # Fibonacci series:
... # the sum of two elements defines the next
... a, b = 0, 1
>>> while a < 10:
...     print a
...     a, b = b, a+b
A primeira estrutura que veremos é o While.
Em Python, zero é considerado como falso e outros números é considerado verdadeiro. A condição a ser testada pelo loop pode ser também uma string ou uma lista, qualquer sequência. Podemos utilizar <, >, ==, <=, >=, != para realizar o teste da condição.
A primeira linha do loop, que é a linha de teste, é finalizado com dois pontos(:). O corpo do loop é identado e pode-se utilizar tab ou espaços para identar a linha. Identação em Python é a forma que o ele possui para agrupar comandos. As linhas dentro do bloco precisam ficar identadas com o mesmo número de espaços ou tabs e o Python é rígico com esta questão. Quando utilizamos o ambiente interativo, é necessário uma linha em branco para indicar o fim do corpo do loop. O comando print imprime o valor na saída padrão. Strings são impressas sem aspas e espaço é inserido entre items:
>>> i = 256*256
>>> print 'The value of i is', i
The value of i is 65536
A vírgula no final do comando print evita imprimir em uma nova linha:
>>> a, b = 0, 1
>>> while a < 1000:
...     print a,
...     a, b = b, a+b
...
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987

No próximo post, continuaremos falando sobre outras estruturas de controle.

Primeiros Passos em Python

Para início, é muito interessante utilizar uma shell para invocar o interpretador do Python e digitar alguns comandos básicos da linguagem. Para isso, apenas se faz necessário digitar, na shell, o comando python. Como no Linux, o Python costuma vir instalado e configurado, não é necessário fazer nada. Porém, se estiver usando o Windows, é importante colocar o caminho da pasta onde o Python foi instalado no path.

Para trabalhar com números, temos os operadores +, -, *, /, como em qualquer outra linguagem.
Podemos atribuir um número a uma variável utilizando o sinal = e podemos associar um número a várias variáveis ao mesmo tempo.

>>> width = 20
>>> height = 5*9
>>> width * height
900

>>> x = y = z = 0  # Zero x, y and z
>>> x
0
>>> y
0
>>> z
0

Assim como números, temos as strings:

>>> 'spam eggs'
'spam eggs'
>>> 'doesn\'t'
"doesn't"
>>> "doesn't"
"doesn't"
>>> '"Yes," he said.'
'"Yes," he said.'
>>> "\"Yes,\" he said."
'"Yes," he said.'
>>> '"Isn\'t," she said.'
'"Isn\'t," she said.'

Podemos ter strings por mais de uma linha de duas formas:

hello = "This is a rather long string containing\n\
several lines of text just as you would do in C.\n\
    Note that whitespace at the beginning of the line is\
 significant."

print hello

print """
Usage: thingy [OPTIONS]
     -h                        Display this usage message
     -H hostname               Hostname to connect to
"""

Strings podem ser contatenadas com o operador + e repetida com *. Podemos trabalhar com Strings utilizando índices:

>>> word = 'Help' + 'A'
>>> word
'HelpA'
>>> '(' + word*5 + ')'
'(helpahelpahelpahelpahelpa)'

>>> word[4]
'A'
>>> word[0:2]
'He'
>>> word[2:4]
'lp'

>>> word[:2]    # Os primeiros dois caracteres
'He'
>>> word[2:]    # Tudo menos os primeiros dois caracteres
'lpA'

>>> word[-1]     # O último caracter
'A'
>>> word[-2]     # O penúltimo caracter
'p'
>>> word[-2:]    # Os últimos dois caracteres
'pA'
>>> word[:-2]    # Tudo menos os dois caracteres
'Hel'

Também temos a função len():

>>> s = 'supercalifragilisticexpialidocious'
>>> len(s)

No próximo post, estarei falando sobre estruturas de controle em Python.