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)
range
cria uma "lista" de elementos
range(5)
vai criar de 0 a 4for
" em python itera em cada elemento de um contêinerTipos 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
" para determinar o tipo de uma variável
>>> 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
>>> 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
input
input
sempre retorna uma string>>> 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
++
e --
>>> 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
is
" e "in
">>> 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
&&
e
||
temos as palavras chave and
e or
!
temos a palavra chave not
&
, |
, ^
, assim como um operador inverter os bits de um inteiro ~
>>> 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
, else
e elif
elif
corresponde a um else
seguido de um if
e existe para evitar indentação excessivaif 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
for
em Python difere do for
em
C/C++palavras = ['gato', 'janela', 'paralelepípedo']
for palavra in palavras:
print (palavra.upper())
range
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
while
em Python, que funciona de forma semelhante ao C/C++
N = 6
f = 1
while N > 1:
f = f * N
N -= 1 # Não existe ++ ou -- em Python
if
, for
, while
, etc) podemos usar pass
para não "fazer nada"
while True:
pass
Vamos agora mostrar em maiores detalhes os tipos de dados em Python
"a" + "b"
é o mesmo que "ab"
*
" pode ser usado para repetir strings
"a" * 10
é o mesmo que "aaaaaaaaaa"
\n
é o mesmo que new line\t
é o mesmo que tab\\
é o mesmo que \\"
e \'
é o mesmo que "
e '
, respectivamente>>> print("""
Um tigre
dois tigres
três tigres""")
format
, split
, join
, strip
>>> disciplina = "Fundamentos de Programação"
>>> professor = "Darlan"
>>> print("{0} é o professor de \"{1}\"".format(professor, disciplina))
Darlan é o professor de "Fundamentos de Programação"
string[índice]
[início:fim:passo]
>>> 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]
+
assim como fazemos com stringsappend
e extend
>>> 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]
remove
pop
remove e retorna o último elemento da listadel
>>> 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á
in
keys()
retorna as chaves no dicionáriodel
para remover um par chave/valor do dicionário>>> 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']
for
d.items()
para retornar uma "lista de pares" de chave e valor que pode ser usada em um for
, por exemplod = {"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
set
>>> 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
>>> 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
fib?
no IPython ou help(fib)
return
return
retornam None
>>> 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
*
e/ou **
antes
do argumento final
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'}
lambda variáveis: expressão
>>> f = lambda a, b: a+b
>>> f(3, 4)
7
>>> f = lambda x: x**2
>>> f(4)
16
.py
~$ python meu_script.py
my_funcs.py
contém
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
))
bin
: converte para representação em base 2oct
: converte para representação em base 8hex
: converte para representação em base 16int('0b1010', base=2)
: converte a partir de uma base para um inteiro (em base 10)0b
, 0o
e 0x
x = 0o20
(20 em octal -> 16 em decimal)