Aventurando-se com Python

Segunda Aula

Variáveis

Nomenclatura de Variáveis

Os nomes usado para referenciar a variáveis são chamados de identifiers ou identificadores. Eles seguem algumas condições, tais como:

  • Devem iniciar com uma letra ou um underscore _, e seguido por letras, numbers ou underscores;
  • São case-sensitives.
  • Não pode ser keywords (palavras reservadas); e
  • Não possuem limitação de comprimento.

Nomenclatura de Variáveis

Variáveis que iniciam com underscore possuem um significado especial. Quando um pacote é importado, as  variáveis que iniciam com underscore não são importadas juntas.

from mymodule import *

#As variáveis iniciadas com _ não estão disponíveis

Por padrão da comunidade e definido na PEP8, as variáveis em Python são escritas em minúsculo, com palavras separadas por underscore. Exemplos: minha_variavel, de_boa_aqui_no_python

Keywords

Para verificar a lista de palavras reservadas do Python, digite o seguinte código:

import keyword

keyword.kwlist

Atribuição de Variáveis

# Atribuição é feita com o sinal =
x = 5
y = 3

# Ela também pode ser feita assim, como multi-atribuição, numa mesma linha
x, y = 5, 3

# O número de variáveis e de valores devem ser o mesmo.
# Senão, algo 'estranho' pode acontecer
x, y, z = "ABC"

print(x) # A
print(y) # B
print(z) # C

x, y, z = "ABCDEF" # ValueError: too many values to unpack (expect 3)

Deletando Variáveis

''' 
Você pode deletar variáveis em Python
usando o operador del
'''
x = 2

del x

print(x) # NameError: name 'x' is not defined

'''
Contudo, você não precisa se preocupar com isso. 
O Python já faz isso internamente.

OBS: Quando você deleta uma variável, ela não é deletada 
efetivamente no exato momento após o comando. O Python verifica antes 
se esta variável não está sendo referenciada por outra variável. 
Se não, ele então a deleta.
''' 

Descobrindo o Tipo

# Use a função type() para descobrir o tipo do valor da variável.
x = 1
type(x) # <class 'int'>

type("abc") == str # True

# Mas em produção, você deve usar o isintance().
isinstance(1, int) # True

Lidando com Booleans

Booleans

umaVariavel = "";

# Convertendo qualquer outro valor para booleano.
valorBooleano = bool(umaVariavel); # False

''' 
Os seguintes valores serão convertidos para False:
  None
  False
  0
  Coleções vazias: “”, (), [], {}
  Objetos de classes que tem o método especial __nonzero__
  Objetos de classes que o  __len__ retorna False ou 0

Todos os outros valores serão True.

'''

Booleans

a = '';
b = 'OK';

''' Usando o operador AND, o valor de a é retornado se ele pode ser 
convertido em false; senão b é retornado. '''
result = a and b;

''' Usando o operador OR, o valor de a é retornado se ele pode ser 
convertido em true; senão b é retornado. '''
result = a or b;

Booleans

True - False # 1

False - True # -1

True + True # 2 

True * 3 # 3

50 + False # 50

bool('') + bool(not None) # 1

Expressões

Conjunto de Operações

x = 5

x < 10 > 3 # True

x > 4 > 5 # False

x > 4 < x # True

x == 5 > 3 # True

Ordem de Precedência

Determina a ordem que a expressão é executada.

Ordem de Precedência

Em uma expressão com operadores booleanos

Numbers

Numbers

# Python suporta tanto int como float. 
# A distinção pela presença ou não do ponto flutuante. Exs.

1 + 1 # 2

1 + 1.0 + 2.0

type(2.0) # <class 'float'>

# Você converter de um para o outro

int(3.45) # 3, ele trunca e não arrendondar

float(3) # 3.0

2.2342125256... # números decimais tem precisão de 15 casas decimais

Listas

Declaração

'''
Uma lista em Python é quase como um array em outras linguagens, 
como Java. Mas uma lista em Python, não tem tamanho fixo 
e os items podem ser de tipos diferentes.
'''
# Exemplos de declaração de listas.
frutas = ["Banana", "Abacaxi", "Goiaba", "Manga"]
lista_doida = [False, 0, "Gato", 2.343]
vazia = []

# A ordem se mantém a mesma que a inserida
print(frutas) # ["Banana", "Abacaxi", "Goiaba", "Manga"]

Acessando

'''
Uma lista tem N índices, onde cada índice é uma posição da lista
Por exemplo, frutas tem 4 elementos, ou 4 índices.
A lista inicia no índice 0 e vai até o índice N-1.
Por exemplo, frutas inicia no 0 e vai até o 3 (4-1).
O número de índices é chamado de comprimento da lista ou length
'''
frutas = ["Banana", "Abacaxi", "Goiaba", "Manga"]

# para acessar um item de uma lista use [indice]
print(frutas[0]) # "Banana"
print(frutas[3]) # "Manga"

# Em Python, você pode acessar uma lista de trás pra frente. Wat?!
print(frutas[-1]) # "Manga", último elemento
print(frutas[-2]) # "Goiaba", penúltimo elemento

# Uma maneira de ver isso mais fácil.
# Pense assim, lista[-n] = lista[length - n].
# frutas[-3] == frutas[4 - 3] # frutas[1]

Acessando: Slicing

'''
Você pode querer acessar a um subconjunto da lista. 
Isso é chamando de slicing.
'''
frutas = ["Banana", "Abacaxi", "Goiaba", "Manga"]

# Exemplos
print(frutas[1:3]) # ["Abacaxi", "Goiaba"]
# Isso sempre me retorna uma nova lista.

print(frutas[1:-1]) # ["Abacaxi", "Goiaba", "Manga"]

print(frutas[1:1]) # []

# Caso, omitido, o primeiro valor por padrão é o início da lista.
print(frutas[:2]) # ["Banana", "Abacaxi", "Goiaba"]

# Caso, omitido, o segundo valor por padrão é o final da lista.
print(frutas[1:]) # ["Abacaxi", "Goiaba", "Manga"]

print(frutas[:]) # ["Banana", "Abacaxi", "Goiaba", "Manga"]

Adicionando itens

'''
Há 4 maneiras de adicionar itens a uma lista já existente
'''
frutas = ["Banana", "Abacaxi", "Goiaba", "Manga"]

# Somando a uma outra lista. i.e. Concatenando.
frutas = frutas + ["Maça", "Acerola"]

# Usando a função append(), adicionando um item ao final da lista
frutas.append("Uva")

# Usando a função extend()
frutas.extend(["Uva", "Goiaba"])

# Usando o insert() para adicionar em uma posição desejada
frutas.insert(1, "Cajú")

# Detalhe do append()
frutas.append(["Cajá", "Graviola"])

Procurando itens

frutas = ["Banana", "Abacaxi", "Goiaba", "Manga", "Banana"]

frutas.count("Banana") # 2

"Banana" in frutas # True

"Laranja" in frutas # False

frutas.index("Banana") # 0

Removendo itens

frutas = ["Banana", "Abacaxi", "Goiaba", "Manga"]

del frutas[1]

frutas.remove("Goiaba")

frutas.pop()

frutas.pop(1)

Tamanho da lista

frutas = ["Banana", "Abacaxi", "Goiaba", "Manga"]

len(frutas) # 4
Made with Slides.com