On Github darcamo / python-crash-course
for i in range(1, 101): # Não há chaves {} if i % 15 == 0: # Não é necessário parêntesis para a condição print("FizzBuzz") elif i % 3 == 0: print("Fizz") elif i % 5 == 0: # elif combina 'else' com 'if' print("Buzz") else: print(i)
Tipos já embutidos no núcleo da linguagem
idade = 4 # Inteiro (int) nome = "Kadu" # String (str) peso = 10.4 # Float (float) vacinado = True # Booleano (bool) dono_anterior = None # Representa um tipo vazio (None) peso_int = int(peso) # Inteiro convertido a partir de um float c = 1-3j # Número complexo
>>> type(peso) float >>> type(peso_int) int >>> type(nome) str
uma_lista = [2, 3, 5.5, 7, 11, "lala"] # Lista (list, []) uma_tupla = (2, "lala", 4) # Tupla (tuple, ()) um_dict = {'nome': "Silvio Santos", # Dicionário (dict) 'idade': 86, "profissões": ["apresentador", "empresário"]} um_conjunto = {1, 4, 8, 10, "lala"} # Conjunto (set)
>>> print("Tá muito fácil") Tá muito fácil >>> x=10; >>> print("Ele tinha", x, "anos") # Separador padrão: espaço Ele tinha 10 anos
>>> print("Digite o nome") >>> nome = input() >>> print("Digite a idade") >>> x = int(input()) # Input retorna um texto >>> print(nome, "tem", x, "anos") # Digitou 'John Doe' e '20' John Doe tem 20 anos
>>> a = 1 >>> b = 2 >>> print(a + b) 3 >>> a = 5 >>> print(a / b) # 'a' e 'b' são inteiros, mas a divisão é em float 2.5 >>> print(a // b) 2 >>> print(a**2) 25
>>> a = 1; b = 2 # Usamos ";" para colocar dois comandos na mesma linha >>> a == b False >>> a > b False >>> a = [1, 2, 3]; b = [1, 2, 3] # Duas listas contendo os mesmos elementos >>> a == b # 'a' e 'b' são iguais (possuem o mesmo valor) ... True >>> a is b # ... mas 'a' e 'b' são variáveis diferentes False >>> a = b # Agora a e b são a mesma variável (modifique um e o outro muda) >>> a is b True >>> l = [2, 5, 10] >>> 5 in l # O número 5 está na lista 'l'? True >>> 4 in l # O número 4 está na lista 'l'? False
>>> 3 < 5 and 4 <= 2 False >>> 3 <= 5 or 4 < 2 True >>> not (3 <= 5 or 4 < 2) False >>> 5 | 2 # Aquele item na 5 questão da prova 7 >>> 5 & 2 # Aquele outro item na 5 questão da prova 0 >>> 16 ^ 6 ^ 10 ^ 15 ^ 16 ^ 6 ^ 10 # Aquela questão que pouca gente acertou 15 >>> ~7 # Invertemos cada bit de 7 (incluindo o bit de sinal) -8
if x == 42: # Código executado de x for igual a 42 print("x vale 42") elif x > 0: print("x não vale 42, mas pelo menos é maior que 0") else: print("Nenhuma das condições anteriores foi verdadeira")
Nota: Não existe "switch case" em Python, mas temos uma alternativa
palavras = ['gato', 'janela', 'paralelepípedo'] for palavra in palavras: print (palavra.upper())
range(5, 10) # 5, 6, 7, 8, 9 range(0, 10, 3) # 0, 3, 6, 9 range(-10, -100, -30) # -10, -40, -70 range(-10, -101, -30) # -10, -40, -70 -100
>>> for i in range(5, 8): ... print(i**2) 25 36 49
N = 6 f = 1 while N > 1: f = f * N N -= 1 # Não existe ++ ou -- em Python
while True: pass
Vamos agora mostrar em maiores detalhes os tipos de dados em Python
>>> print(""" Um tigre dois tigres três tigres""")
>>> disciplina = "Fundamentos de Programação" >>> professor = "Darlan" >>> print("{0} é o professor de \"{1}\"".format(professor, disciplina)) Darlan é o professor de "Fundamentos de Programação"
>>> a = "abcde" >>> a[0] # Pega o primeiro elemento a >>> a[-1] # Pega o último elemento e >>> a[-2] # Pega o penúltimo elemento d >>> a[2:4] # Pega os elementos do índice 2 ao índice 3 cd >>> a[-2:] # Dois últimos elementos de >>> a[::-2] # Pega os elementos do primeiro ao último pulando de 2 em 2 ace
>>> l1 = [15, 34.5, 44] # itens são separados por vírgulas >>> l2 = ["Brasil", "Estados Unidos", "Japão", "França"] >>> l3 = [1, 2, "três", "quatro"] # Itens podem ter tipos diferentes
>>> a = [1, 5, 10, 15, 20] >>> a[2] = 100 >>> print(a) [1, 5, 100, 15, 20]
>>> a = [1, 5, 10] >>> a.append(15) # Adiciona o número 15 na lista >>> print(a) [1, 5, 10, 15] >>> b = [100, 200] >>> a.extend(b) # Adiciona os elementos da lista 'b' na lista 'a' >>> print(a) [1, 5, 10, 15, 100, 200]
>>> a = [1, 5, 10, 15, 100, 200] >>> a[1::2] = [1000, 2000, 3000] # a[1::2] -> posições 1, 3 e 5 >>> print(a) [1, 1000, 10, 2000, 100, 3000] >>> a.remove(10) # Encontra o primeiro 10 na lista e remove >>> print(a) [1, 1000, 2000, 100, 3000] >>> b = a.pop() # Remove o último elemento da lista (3000) e retorna >>> print(b) 3000 >>> del a[0:2] # Remove os 2 primeiros elementos
>>> a = [x**2 for x in range(10)] >>> print(a) [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] >>> a = [x**2 for x in range(10) if x % 2 == 0] >>> print(a) [0, 4, 16, 36, 64]
Veja mais na documentação oficial
>>> minha_tupla = (1, 2, 3, "e", "já") >>> minha_tupla[0] = 10 # ERRO -> tuplas são imutáveis! >>> a, b, c, d, e = minha_tupla # Coloca os elementos nas variáveis >>> print(b) 2 >>> print(e) já
>>> telefones = {"Polícia": 190, "Ambulância": 192} >>> telefones["Polícia"] 190 >>> "Bombeiros" in telefones False >>> telefones["Bombeiros"] = 193 >>> "Bombeiros" in telefones True >>> print(list(telefones.keys())) # Imprime uma lista com as chaves ['Bombeiros', 'Ambulância', 'Polícia'] >>> del telefones['Ambulância'] >>> print(list(telefones.keys())) # Imprime uma lista com as chaves ['Bombeiros', 'Polícia']
d = {"pi": 3.141592, "e": 2.718282, "número de ouro": 1.6180} for chave, valor in d.items(): pass # Faça alguma coisa com a chave e o valor
Exemplo
>>> for chave, valor in d.items(): ... print("{0}: {1}".format(chave, valor)) e: 2.718282 pi: 3.141592 número de ouro: 1.618
>>> cesta = {'maçã', 'laranja', 'maçã', 'pera', 'laranja', 'banana'} >>> print(cesta) # Perceba que duplicatas foram eliminadas {'pera', 'banana', 'laranja', 'maçã'} >>> 'laranja' in cesta True >>> 'limão' in frutas False >>> A = set('abracadabra'); B = set('alacazam') # Vamos testar operaçoes >>> A | B # União: Letras em a ou b {'a', 'b', 'c', 'd', 'l', 'm', 'r', 'z'} >>> A & B # Interseção: Letras em a e em b {'a', 'c'} >>> A - B # Diferença: Letras em a que não estão em b {'b', 'd', 'r'} >>> A ^ B # Diferença simétrica: Letras em a ou em b, mas não em ambos {'b', 'd', 'l', 'm', 'r', 'z'}
>>> def fib(n): ... """Imprime a série de Fibonacci até n. Essa função não retorna nada.""" ... a, b = 0, 1 ... while a < n: ... print(a, end=" ") ... a, b = b, a+b ... print() >>> fib(1000) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fib <function __main__.fib> >>> f = fib >>> f <function __main__.fib> >>> f(1000) # Chama a função passando 1000 para o parâmetro n 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> def fib2(n): ... """Retorna (lista) a série de Fibonacci até n.""" ... result = [] # Cria uma lista vazia ... a, b = 0, 1 ... while a < n: ... result.append(a) # Adiciona um elemento na lista ... a, b = b, a+b ... return result ... >>> f100 = fib2(100) # chama a função >>> f100 # Notem que f100 é uma lista [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
def calc_s(t, s0=0, v0=1, a=0.5): """Calcula posição final dados s0, v0, a e t.""" return s0 + v0*t + 0.5 * a * t**2
>>> calc_s(5) # Chama a função apenas com o parâmetro obrigatório 11.25 >>> calc_s(5, 10) # Passa os 2 primeiros parâmetros 21.25 >>> calc_s(5, 10, a=1.0) # Passa 't' e 's0' pela posição e 'a' pelo nome 27.5
Nota: Não use tipos mutáveis para valores padrão
def my_func(a, b, *args, **kwargs): # 'a' é um 'b' são parâmetros obrigatórios print(a) print(b) # tupla de todos os parâmetros via posição print(args) # Dicionário com todos os parâmetros fornecidos via palavra chave print(kwargs)
>>> my_func(1, 2, 3, "e", "já", modelo="Fusca", cor="Amarelo") 1 2 (3, 'e', 'já') {'cor': 'Amarelo', 'modelo': 'Fusca'}
>>> f = lambda a, b: a+b >>> f(3, 4) 7 >>> f = lambda x: x**2 >>> f(4) 16
~$ python meu_script.py
def dobra(x): return 2*x def triplica(x): return 3*xÉ possíve importar as definições do módulo my_funcs
>>> from my_funcs import dobra, triplica >>> dobra(5) 10 >>> triplica(5) 15
>>> import my_funcs as mf >>> mf.dobra(5) 10 >>> mf.triplica(5) 15
In [1]: abs? Docstring: Return the absolute value of the argument. Type: builtin_function_or_method
precos = {"banana prata": 3.50, "coco verde": 2.0, "maçã nacional": 4.50, "manga tommy": 5.0, "uva red glob": 5.0} minhas_compras = {"banana prata": 1.2, "coco verde": 6, "uva red glob": 0.6} # Usa um list comprehension para gerar uma lista e soma os seus valores conta = sum([precos[fruta] * minhas_compras[fruta] for fruta in minhas_compras]) print("Eu precisei pagar o total de R$ {0:.2f} em frutas".format(conta))
texto = '''"Aonde fica a saída?", Perguntou Alice ao gato que ria. "Depende", respondeu o gato. "De quê?", replicou Alice; "Depende de para onde você quer ir..."''' palavras = texto.split() # Separa o texto em uma lista de palavras print("O texto tem {0} palavras, sendo {1} delas diferentes.".format( len(palavras), # Número de palavras len(set(palavras)) # Número de palavras únicas ))