Minicurso Python
Júlia Rizza
contato@juliarizza.com
python
1991
guido van rossum
-
Monty Python Flying Circus
-
Produtividade e legibilidade
-
Interpretada
-
Tradução dinâmica
-
-
Alto nível
-
LINDA DE BONITA!
alguém usa python?
Download & Instalação
https://www.python.org/downloads/
Windows
Execute o .exe e então: next, next, next :D
Mac (MacPorts)
sudo port install python34
Linux
sudo apt-get install python3
sudo apt-get install idle3
Python IDLE
arquivos .py
>>> print("Hello world!")
Hello World!
Na IDLE
No Arquivo .Py
# -*- coding: utf-8 -*-
print("Oi, galerão!")
fazendo contas
>>> 10+5 #adição
15
>>> 20-11 #subtração
9
>>> 2*10 #multiplicação
20
>>> 30/2 #divisão
15
>>> 2**4 #exponenciação
16
>>> 10 % 8 #resto da divisão inteira
2
>>> 120-30+2**3 #múltiplas operações
98
python vs c++
#include <iostream>
using namespace std;
void main() {
cout << "Hello World!" << endl;
system("pause");
}
# -*- coding: utf-8 -*-
print("Hello World!")
# -*- coding: utf-8 -*-
num = input("Amigão, diz um número aí: ")
soma = 0
for i in range(len(num)):
soma += int(num[i])
print(soma)
Faça um programa que, dado um número inteiro, fornece como resultado a soma dos números representados por esses algarismos. Exemplo: Numero digitado (123) deve fornecer resultado (6).
# -*- coding: utf-8 -*-
from random import randint
num = randint(1, 1001)
tentativas = 0
usuario = None
while usuario != num:
usuario = int(input("Chute um número: "))
tentativas += 1
if usuario > num:
print("O número é menor!\n")
elif usuario < num:
print("O número é maior!\n")
print("Parabéns! Você acertou o número!")
print("Foram feitas %d tentativas." % tentativas)
Faça um programa que gera um número aleatório de 1 a 1000. O usuário deve tentar acertar qual o número que foi gerado, a cada tentativa o programa deverá informar se o chute é menor ou maior que o número gerado. O programa acaba quando o usuário acerta o número gerado. O programa deve informar em quantas tentativas o número foi descoberto.
hora de
fazer
programa
Faça o cálculo e exiba na tela o resultado das seguintes operações:
- Soma de 56 e 4
- Diferença de 2 e -2
- Soma de 37 e 2,5
- Multiplicação de 10 e 9
- Divisão de 20 por 4
- Diferença de 65 e 45,5
- Divisão de 54 por 9,5
- 25 elevado ao quadrado
- Resto de 10 divido por 3
>>> 56 + 4
>>> 2 - (-2)
>>> 37 + 2.5
>>> 10 * 9
>>> 20 / 4
>>> 65 - 45.5
>>> 54 / 9.5
>>> 25 ** 2
>>> 10 % 3
Realize o cálculo das operações a seguir convertendo para os operadores Python:
- 2 + 3 x 5
- (2 + 3) X 5
- 7 - 2 + 8 / 2
- (7 - 2 + 8) / 2
- 15 X 4 - 30
- 15 X (4 - 30)
- 12 / 3 + 3
- 12 / (3+3)
- 10² / 45+37
>>> 2+3*5
>>> (2+3)*5
>>> 7-2+8/2
>>> (7-2+8)/2
>>> 15*4-30
>>> 15*(4-30)
>>> 12/3+3
>>> 12/(3+3)
>>> 10**2/45+37
Verifique como Python reage às seguintes operações:
- 10 ** 0
- 1 ** 0
- 0 ** 0
- 15 / 10
- 12.5 / 5
- 12 / 0
>>> 10**0
1
>>> 1**0
1
>>> 0**0
1
>>> 15/10
1.5
>>> 12.5/5
2.5
>>> 12/0
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
12/0
ZeroDivisionError: division by zero
Faça um programa que mostre a tabuada do 2, do 5 e do 10.
print("Tabuada do 2")
print("2x1:")
print(2*1)
print("2x2:")
print(2*2)
print("2x3:")
print(2*3)
print("2x4:")
print(2*4)
print("2x5:")
print(2*5)
print("2x6:")
print(2*6)
print("2x7:")
print(2*7)
print("2x8:")
print(2*8)
print("2x9:")
print(2*9)
print("2x10:")
print(2*10)
Principais tipos básicos
já ouviu falar de string?
num = 10
50
0.5
"Vlw flws"
True
[1, "a", num]
(1, 2, 3)
{123, 456}
{'k': 'v'}
variáveis
strings
tuplas
inteiros
booleanos
sets
floats
listas
dicts
variável
num = 10
num = 20
num += 12
print(num)
Não pode: conter espaços, começar com números ou ser uma palavra reservada.
and | def | exec | if | not | return |
assert | del | finally | import | or | try |
break | elif | for | in | pass | while |
class | else | from | is | yield | |
continue | except | global | lambda | raise |
inteiros e floats
10
2.5 #ponto!!
type(20) #int
type(4.7) #float
Operações básicas:
10+20
50-2.5
4*10
10.5/10
0 ** 0 #1
10 % 5
resto
exponenciação
divisão
multiplicação
subtração
soma
String
"Isso é uma string."
"10" #isso também
print("Vlw flws")
type("50") #string
Casos Especiais
- Aspas simples e duplas
'I\'m an apple.'
- Escapando caracteres
"I'm an apple."
- Aspas triplas
"""
Mais de uma
linha.
Vlw flws.
"""
booleano
True
False
(10 > 5)
type(True) #bool
Valores verdadeiros ou falsos ou interpretados como tal.
Aplicação binária
Comparações lógicas
Linguagem de máquina
listas, tuplas & sets
[5, 10, "20"]
('a', 5, 'c')
{1, 11, 23}
type([1,2,3]) #list
type((4,5,6)) #tuple
type({7,8,9}) #set
Diferenças: imutabilidade da tupla e não-repetição do set
- "Slicing" = fatiamento
lista = [1, 20, 'c']
lista[0] #1
lista[1] #20
- Métodos built-in
append(x)
|
pop() | index(x) |
count(x) | sort() | len()* |
Obs: slicing e métodos não aplicáveis no Set
dicionário
{'key': 'value'}
{'nome': 'João', 'idade': 20}
dict(nome='João', idade=20)
type({'chave': 'valor'}) #dict
Definição: associação de valores à palavras-chave
hora de
fazer
programa
Faça um programa que pergunte seu nome e exiba-o na tela.
nome = input("Qual seu nome? ")
print("Seu nome é: %s" % nome)
Faça um programa que adicione dois valores informados pelo usuário em uma lista, em seguida remova o último e, por fim, informe o tamanho da lista.
val1 = input("Insira o primeiro valor: ")
val2 = input("Insira o segundo valor: ")
lista = []
lista.append(val1)
lista.append(val2)
print("A lista é {lista}".format(lista=lista))
lista.remove(val2)
print("A nova lista é {lista}".format(lista=lista))
print("A lista tem {num} elementos.".format(num=len(lista)))
Escreva um programa que peça o nome, a idade e o telefone do usuário e armazene esses dados em um dicionário. Em seguida, exiba o dicionário.
nome = input("Qual seu nome? ")
idade = int(input("Qual sua idade? "))
telefone = input("Qual seu telefone? ")
dados = {"nome": nome, "idade": idade, "telefone": telefone}
print(dados)
Faça um programa que calcule o comprimento e a área de uma circunferência. As fórmulas são, respectivamente:
Comprimento = 2*pi*R
Área = 4/3(pi*R²)
raio = int(input("Informe o raio da circunferencia: "))
compr = 2*3.14*raio
area = 4/3*(3.14*(raio**2))
print("O comprimento e: %.2f" % compr)
print("A area e: %.2f" % area)
Calcule um aumento de 15% para um salário informado pelo usuário.
salario = float(input("Informe o salário: "))
salario += 0.15 * salario
print("O novo salário é: {salario:.2f}".format(salario=salario))
Escreva um programa que solicite o preço de uma mercadoria e o percentual de desconto e armazene os valores no dicionário. Utilize o dicionário para retornar os valores e fazer o cálculo do preço com o desconto.
produto = {}
produto['preco'] = float(input("Informe o preço: "))
produto['desconto'] = int(input("Informe o desconto (em %): "))
produto['preco_final'] = produto['preco'] - (produto['preco']*(produto['desconto']/100))
print("O produto custava {preco} e o novo preço é: {preco_final:.2f}".format(
preco=produto['preco'],
preco_final=produto['preco_final']
))
Escreva um programa que pergunte a quantidade de km percorridos por um carro alugado pelo usuário, assim como a quantidade de dias pelos quais o carro foi alugado. Calcule o preço a pagar, sabendo que o carro custa R$ 60,00 por dia e R$ 0,15 por km rodado.
km = int(input("Quantidade de km rodados: "))
dias = int(input("Quantidade de dias alugado: "))
preco = 60*dias + 0.15*km
print("Preço a pagar: R${preco:.2f}".format(preco=preco))
Escreva um programa para calcular a redução do tempo de vida de um fumante. Pergunte a quantidade de cigarros fumados por dia e quantos anos ele já fumou. Considere que um fumante perde 10 minutos de vida a cada cigarro, calcule quantos dias de vida um fumante perderá. Exiba o total em dias.
cig_dia = int(input("Quantidade de cigarros por dia: "))
anos = int(input("Quantos anos fumando? "))
minutos = 10*cig_dia*anos*365
dias = minutos/1440
print("Voce perdeu {dias:.2f} dias de vida.".format(dias=dias))
operadores relacionais
Operador | Valor | |
== | Igual | |
!= | Diferente | |
< | Menor | |
> | Maior | |
<= | Menor ou Igual | |
>= | Maior ou Igual |
>>> 10 > 5
True
>>> 20 < 7
False
>>> (20**2) > 100
True
>>> (2*5) == 10
True
>>> 40 != (4*10)
False
>>> 3*5 <= 15
True
>>> 27 >= 120
False
>>> (2**5) != 32
False
>>> 10 % 2 == 1
False
>>> 120 % 6 == 0
True
operadores lógicos
>>> not False
True
>>> not True
False
>>> True and True
True
>>> True or False
True
>>> True and False
False
>>> 10 > 5 and 10 < 20
True
>>> 5 < 10 < 20 and 10 > 30
False
>>> 20 >= 21 or 11 < 9
False
>>> not 10 > 9
False
>>> not 120 % 60 != 0
True
condições
if (se)
if None:
print('Nunca acontecerá!')
if 2*10 == 20:
print('Agora acontece!')
elif (~ou se)
if None:
print('Nunca acontecerá!')
elif 2*10 == 20:
print('Agora acontece!')
else (se não)
if None:
print('Nunca acontecerá!')
elif 2*10 != 20:
print('Ainda não!')
else:
print('Agora acontece!')
Utilize sempre indentação, brô!
loops (ou laços ou repetições)
repetição
print(1)
print(2)
print(3)
.
.
.
print(10)
while
i = 1
while (i <= 10):
print(i)
i += 1
##############################
i = 1
while (i <= 10):
print(i)
if i % 3 == 0:
break
i+= 1
for ... in ...
for i in [1,2,3,4,5,6,7,8,9,10]:
print(i)
for i in range(1, 11):
print(i)
################################
for i in [1,2,3]:
if i == 4:
print("4!")
break
else:
print("Sem 4 :(")
Utilize sempre indentação, brô!
hora de
fazer
programa
Verifique o resultado de A and B or C > D para:
- A = 0, B = 1, C = 5, D = 20
- A = 1, B = 1, C = 30, D = 13
- A = 0, B = 0, C = 12, D = 7
>>> A = 0
>>> B = 1
>>> C = 5
>>> D = 20
>>> A and B or C > D
False
>>> A = 1
>>> B = 1
>>> C = 30
>>> D = 13
>>> A and B or C > D
1
>>> A = 0
>>> B = 0
>>> C = 12
>>> D = 7
>>> A and B or C > D
True
Escreva um programa que retornará se um aluno passou ou não de ano. Para verificar isso, o programa deverá receber as notas de três matérias e verificar se todas as três são maiores que 60. O retorno deve ser True ou False, sem utilizar condições.
mat1 = float(input("Nota na matéria 1: "))
mat2 = float(input("Nota na matéria 2: "))
mat3 = float(input("Nota na matéria 3: "))
print(mat1>60 and mat2>60 and mat3>60)
Escreva um programa que pergunte a velocidade do carro do usuário. Caso ultrapasse 80km/h, exiba uma mensagem dizendo que o usuário foi multado. Nesse caso, exiba o valor da multa, cobrando R$ 5,00 por km acima de 80.
velocidade = float(input("Sua velocidade (km/h): "))
if velocidade > 80:
print("Você foi multado!")
multa = 5*(velocidade-80)
print("O valor da multa é de R${valor:.2f}".format(valor=multa))
Faça um programa que exiba na tela os números de 1 a 100.
x = 1
while(x <= 100):
print(x)
x += 1
Escreva um programa que pergunte a distância que um passageiro deseja percorrer em km. Calcule o preço da passagem, cobrando R$ 0,50 por km para viagens de até 200 km e R$ 0,45 para viagens mais longas.
km = int(input("Quantos km deseja percorrer? "))
if km < 200:
preco = 0.5 * km
else:
preco = 0.45 * km
print("O valor da passagem e R${preco:.2f}".format(preco=preco))
Escreva um programa que leia dois números e que pergunte qual operação você deseja realizar. Você deve poder calcular a soma (+), subtração (-), multiplicação (*) e divisão (/). Exiba o resultado da operação solicitada.
num1 = float(input("Informe o primeiro numero: "))
num2 = float(input("Informe o segundo numero: "))
opcao = int(input("Qual operação deseja fazer? 1-soma, 2-subtração, 3-multiplicação, 4-divisão "))
if opcao == 1:
print(num1+num2)
elif opcao == 2:
print(num1-num2)
elif opcao == 3:
print(num1*num2)
elif opcao == 4:
print(num1/num2)
else:
print("Opção inválida!")
Escreva um programa para exibir na tela a contagem regressiva de um foguete. O programa deve imprimir 10, 9, 8, …, 1, 0 e Fogo!
x = 10
while(x>=0):
print(x)
x -= 1
print("Fogo!")
Escreva um programa que leia números inteiros do teclado e armazene-os numa lista. O programa deve ler os números e armazenar até que o usuário digite 0 (zero). No final da execução, exiba a quantidade de números digitados, assim como a soma e a média aritimética.
print("Pressione 0 para sair!")
lista = []
num = 1
while(num != 0):
num = int(input("Insira um número: "))
lista.append(num)
soma = 0
for num in lista:
soma += num
media = soma/len(lista)
print("{quant} números digitados, sua soma é {soma} e a média é {media:.2f}".format(
quant=len(lista),
soma=soma,
media=media
))
Abstração
Herança
Funções
def soma(a, b):
return a+b
soma(1, 5) # 6
soma(3,19) # 22
def repetir(qtd, char='*'):
return qtd*char
repetir(8) # ********
repetir(5, '$') # $$$$$
string() | int() | set() |
list() | dict() | float() |
len() | type() | input() |
max(a,b) | min(a,b) | range(inicio, fim) |
- Menos repetição
- Realizar ações
- Reutilização de código
variáveis locais e globais
a = 15
def trocas():
a = 20
return a
print(a) #15
trocas() #20
A posição da variável (dentro ou fora da função) faz diferença!
Classes
class Carro():
def __init__(self):
self.cor = 'Preto'
self.lugares = 5
self.velocidade = 0
def acelera(self, aumento):
self.velocidade += aumento
def para(self):
self.velocidade = 0
gol = Carro()
gol.acelera(50) # 50km/h
gol.acelera(20) # 70km/h
gol.para() # 0km/h
self.característica define um atributo
self.função define um método da classe!
Herança (na prática)
class Gol(Carro):
def __init__(self):
Carro.__init__(self)
self.cor = 'Prata'
self.airbag = True
self.som_ligado = False
def liga_som():
self.som_ligado = True
gol = Gol()
gol.acelera(40) # 40km/h
gol.para() # 0km/h
gol.liga_som() # som_ligado = True
As características e funcionalidades da classe Carro são mantidas na classe Gol.
hora de
fazer
programa
Escreva uma função que retorne o maior de dois números.
def maior(num1, num2):
if num1 > num2:
return num1
else:
return num2
Escreva uma função que receba a base e a altura de um triângulo e calcule sua área.
Area = base x altura / 2
def area_triangulo(base, altura):
return base*altura/2
Escreva uma classe Televisão com atributos como canais, volume e ligada. Crie métodos para ligar, desligar, mudar de canal e aumentar ou diminuir o volume.
class Televisao():
def __init__(self):
self.canais = ["Globo", "SBT", "Record"]
self.canal_atual = 0
self.ligada = False
self.volume = 10
def liga(self):
self.ligada = True
def desliga(self):
self.ligada = False
def muda_canal(self, canal):
self.canal_atual = canal
print("Canal atual: %s" % self.canais[canal])
def aumenta_volume(self):
self.volume += 1
def abaixa_volume(self):
self.volume -= 1
Escreva uma função que receba uma string e uma lista. A função deve comparar a string passada com os elementos da lista, também passada como parâmetro. Retorne verdadeiro se a string for encontrada dentro da lista, e falso caso contrário.
def compara(texto, lista):
for item in lista:
if texto == item:
return True
return False
Escreva uma classe Cliente que tenha como atributos os dados de um usuário (nome, telefone, idade, etc) e métodos alterar_nome, alterar_idade, etc.
class Cliente():
def __init__(self):
self.nome = ""
self.idade = ""
self.telefone = ""
def muda_nome(self, nome):
self.nome = nome
print("Novo nome: %s" % nome)
def muda_idade(self, idade):
self.idade = idade
print("Nova idade: %d" % idade)
def muda_telefone(self, telefone):
self.telefone = telefone
print("Novo telefone: %s" % telefone)
Manipulação de arquivos
arquivo = open('texto.txt', 'w')
arquivo.write("""Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc semper,
arcu a lacinia varius, nulla sem ultricies massa, nec convallis nulla augue efficitur
ex. Sed in mollis nisi, sit amet hendrerit orci. Praesent eget lorem ac magna euismod
vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sagittis ut
lacus quis bibendum. Fusce in dictum mauris. In varius ex sit amet congue ornare. """)
arquivo.close()
arquivo = open('texto.txt', 'r')
texto = arquivo.readlines()
for linha in texto:
print(linha)
arquivo.close()
Cria, lê e altera arquivos existentes no diretório informado.
Módulos e bibliotecas
Um módulo é um arquivo Python contendo definições e declarações.
def fib(n): # escreve a sequência Fibonacci até o número n
a, b = 0, 1
while b < n:
print b,
a, b = b, a+b
def fib2(n): # retorna a sequência Fibonacci até o número n
result = []
a, b = 0, 1
while b < n:
result.append(b)
a, b = b, a+b
return result
# modo 1
import fibo
fibo.fib(1000) # ou fib = fibo.fib
print(fibo.fib2(1000))
# modo 2
from fibo import *
fib(1000)
print(fib2(1000))
# modo 3
from fibo import fib
fib(1000)
print(fib2(1000))
# modo 3 e meio :P
from fibo import fib, fib2
fib(1000)
print(fib2(1000))
random math tkinter
Standard (inclusos na linguagem): https://docs.python.org/3/py-modindex.html
PyPI (Package Index): https://pypi.python.org/pypi
fibo.py
contas.py
Interfaces Gráficas
#!/usr/bin/python
import tkinter
top = tkinter.Tk()
def hello_world():
l = tkinter.Label(top, text="Hello world!")
l.pack()
w = tkinter.Button(top, text="Clica em mim!", command=hello_world)
w.pack()
top.mainloop()
Usando o Tkinter, módulo padrão de Python:
Tkinter PyGTK PyQt wxPython JPython Kivy
tratamento de erros
try:
4/0
except ZeroDivisionError:
print("Não foi dessa vez, champs!")
SintaxError
IdentationError
KeyError
NameError
TypeError
ValueError
IndexError
Bibliografia
- Introdução à programação com Python - Nilo Ney
- Apostila do minicurso
- CodeAcademy
- LearnPython
minicurso python
Júlia Rizza
contato@juliarizza.com
Minicurso Python - eSolvere
By Júlia Rizza
Minicurso Python - eSolvere
- 1,770