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 print 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

minicurso python

Júlia Rizza

contato@juliarizza.com

Minicurso Python - eSolvere

By Júlia Rizza

Minicurso Python - eSolvere

  • 1,770