Introdução a Python - Parte 1

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Referências

Parte 1: Introdução à linguagem Python

Um primeiro exemplo

Qualquer tutorial de programação que se preze inicia com um exemplo do tipo Hello world !. Pois bem, em Python isso pode ser feito assim:

print('Hello world !')

Para executá-lo, há pelo menos duas maneiras:

  1. Usando o prompt do interpretador Python: isso é parecido com o uso do shell em um terminal.
    1. Em um terminal execute o interpretador Python:
      $ python3
      Python 3.4.3 (default, Sep 14 2016, 12:36:27) 
      [GCC 4.8.4] on linux
      Type "help", "copyright", "credits" or "license" for more information.
      >>>
      
    2. No prompt do interpretador digite a instrução para mostrar o Hello world ! e em seguida tecle ENTER:
      >>> print('Hello world !')
      
    3. Você deve ver na tela o resultado:
      >>> print('Hello world !')
      Hello world !
      >>>
      
  2. Criando um arquivo de script: um script é um programa executado por meio de um interpretador. Se a instrução para o Hello world ! for gravada em um arquivo da maneira mostrada a seguir, esse arquivo pode ser considerado um programa Python. Sendo assim:
    1. Crie o arquivo hello.py com seu editor favorito, e nele grave este conteúdo:
      #!/usr/bin/python3
      
      print('Hello world !')
      
    2. Ative a permissão de execução do seu arquivo hello.py:
      chmod +x hello.py
      
    3. Por fim, execute o programa hello.py:
      $ ./hello.py
      Hello world !
      $
      

Um pouco de história


Zen de Python

  • Belo é melhor que feio
  • Explícito é melhor que implícito
  • Simples é melhor que complexo
  • Complexo é melhor que complicado
  • Plano é melhor que aninhado
  • Esparso é melhor que denso
  • Legibilidade é importante
  • Casos especiais não são especiais o suficiente para quebrar as regras
  • Embora praticidade vença pureza
  • Erros nunca deveriam passar silenciosos
  • A não ser que explicitamente silenciados
  • Em face a ambiguidade, recuse a tentação de adivinhar
  • Deveria existir uma, e preferencialmente somente uma, maneira óbvia de fazer
  • Embora essa forma possa não ser óbvia de primeira, a não ser que você seja um holandês
  • Agora é melhor que nunca
  • Embora nunca é frequentemente melhor do que agora mesmo
  • Se a implementação é difícil de explicar, é uma má ideia
  • Se a implementação é fácil de explicar, pode ser uma boa ideia
  • Namespaces são uma grande e sonora ideia -- vamos fazer mais desses !

Uma simples (?) aplicação


Existem muitas possíveis aplicações que podem ser criadas com Python. Portanto o critério para escolher uma aplicação como tema para guiar esta introdução à linguagem é um tanto arbitrária. Nem por isso o programa a ser apresentado deixa de ser interessante. Afinal, o principal ponto é demonstrar como se pode criar com facilidade uma aplicação que faz uma tarefa não tão simples.

Imagine que seja necessário ter um programa que extraia automaticamente imagens existentes em páginas web. Esse programa basicamente acessa uma URL, e no documento web lá existente ele procura por imagens e as transfere para o computador. Esse programa precisaria do seguinte:

  1. Uma forma de obter o conteúdo de uma página web, dada sua URL.
  2. Identificar todas as referências a imagens contidas nessa página.
  3. Transferir cada uma das imagens para o disco local.


A primeira versão dessa aplicação pode ser vista a seguir. Ela somente mostra os nomes dos links das imagens existentes em uma determinada página. A URL dessa página deve ser informada como argumento de linha de comando:

#!/usr/bin/python3

# Importa alguns modulos necessarios

# Modulo de sistema (um modulo basico)
import sys

# Este modulo fornece um interpretador de conteúdo HTML
from bs4 import BeautifulSoup

# Este modulo fornece um acessador de conteudo web (cliente HTTP)
from urllib import request

# define a variavel "url", cujo conteudo eh o primeiro argumento de linha de comando 
# que deve conter uma URL
url = sys.argv[1]

# cria um acessador para acessar a URL
con = request.urlopen(url)

# Le todos os bytes do conteudo web identificado pela URL
dados = con.read()

# encerra a conexao do acessador
con.close()

# cria um analisador de conteudo HTML
parser = BeautifulSoup(dados, 'lxml')

# extrai uma lista de elementos HTML do tipo "img"
imagens = parser.find_all('img')

# itera a lista de elementos img
for img in imagens:
  # mostra o nome da imagem
  print(img['src'])

sys.exit(0)


Para executá-la, deve-se aplicar a técnica 2 (ver Primeiro exemplo):

  1. Copie o conteúdo do script Python para um arquivo chamado app1.py.
  2. Ative a permissão de execução desse arquivo
  3. Execute-o informando uma URL como argumento. Os caminhos das imagens serão mostrados em seguida (um por linha). Ex:
    $ ./app1.py http://mcc.sj.ifsc.edu.br 
    http://mcc.sj.ifsc.edu.br/files/2016/10/MCC_2016_TOPO-SITE_v3.jpg
    http://mcc.sj.ifsc.edu.br/files/2016/07/imagem_capa_site_mcc2016-1.png
    http://mcc.sj.ifsc.edu.br/wp-content/themes/responsive/core/icons/twitter-icon.png
    http://mcc.sj.ifsc.edu.br/wp-content/themes/responsive/core/icons/facebook-icon.png
    


Essa aplicação será explorada ao longo deste curso, quando diversas melhorias serão realizadas.

Elementos da linguagem

Python é uma linguagem com algumas características muito particulares, as quais a simplificam e a tornam muito rica e expressiva. Nesta parte do curso alguns elementos básicos da linguagem serão apresentados.

Apresentação de dados na tela

Uma necessidade elementar de um programa é apresentar informações na tela na forma de texto simples. Python oferece a função predefinida print, que mostra texto na tela de forma simples e com grande flexibilidade. Ela já foi vista no exemplo Hello world !, e aqui alguns detalhes sobre como usá-la serão mostrados.

A função print pode ser usada para mostrar um texto. Note que uma constante string pode ser delimitada tanto por aspas simples quanto duplas:

print('Um texto')
print("Outro texto")


Múltiplos argumentos podem ser passados à função, bastando separá-los por vírgulas. Ao serem apresentados, um espaço em branco é inserido entre eles:

print('Um texto',"Outro texto")

Valores de diferentes tipos podem ser mostrados com print, tais como números inteiros e ponto flutuante:

print('Numero inteiro:', 5)
print('Numero ponto-flutuante:', 3.1416)

Naturalmente, os valores a serem apresentados podem estar contidos em variáveis:

x = 5
pi = 3.1416
print('Numero inteiro:', x)
print('Numero ponto-flutuante:', pi)

Quando múltiplos valores são apresentados, pode-se modificar o separador inserido entre eles. Como já informado, incialmente o separador é um espaço em branco, mas ele pode ser qualquer coisa:

x = 5
pi = 3.1416
print('Numero inteiro:', x, sep='-->')
print('Numero ponto-flutuante:', pi, sep='...')


Por fim, print por default adiciona uma quebra de linha ao final dos dados apresentados, mas isso pode ser alterado. Por exemplo, se for desejável mostrar uma vírgula ao invés da quebra de linha:

x = 5
pi = 3.1416
print('Numero inteiro:', x, end=', ')
print('Numero ponto-flutuante:', pi)


Estrutura do código-fonte

Tipos de dados básicos

Python possui alguns tipos de dados básicos. A rigor, todos tipos de dados em Python são na verdade classes, e variáveis desses tipos são objetos. Isso abre um grande leque de operações que podem ser feitos com essas variáveis.

Tipos numéricos

Python possui dois tipos numéricos:

  • Inteiros (int)
  • Ponto-flutuante (float)


Variáveis desses tipos são criadas principalmente ao se atribuirem constantes numéricas a elas:

# x é uma variável do tipo int
x = 1

# pi é uma variável do tipo float
pi = 3.1416

Tipos numéricos suportam operações aritméticas típicas:

x = 1
pi = 3.1416

# Soma de dois inteiros: resultado é inteiro
y = x + 2

# Soma de inteiro e float: resultado é float
z = x + pi

# Multiplicação de inteiros: resultado é inteiro
w = x * 2

# Multiplicação entre int e float: resultado é float
v = pi*x

# Divisão entre inteiros: resultado é float
y = y / 2

# Potenciação de int: resultado é int
x = x**2

# Potenciação de float: resultado é float
y = pi**3


Exercícios:

  1. Execute o programa acima. Que resultados ele apresenta ?
  2. Modifique o programa para que cada nova variável tenha seu valor mostrado na tela segundo este formato: nome_da_variável=valor_da_variável

Conversões entre os tipos de dados podem ser feitas usando diretamente as classes int e float:

  • Conversão para int:
    # pi é float
    pi = 3.1416
    
    # numero é uma string !
    numero = '12345'
    
    # converte os valores para int
    x = int(pi)
    y = int(numero)
    
    print('x:', x)
    print('y:', y)
    
  • Conversão para float:
    # x é int
    x = 23
    
    # numero é uma string !
    numero = '3.1416'
    
    # converte os valores para float
    y = int(x)
    pi = int(numero)
    
    print('y:', y)
    print('pi:', pi)
    

Tipo booleano

Python possui um tipo de dados booleano chamado bool. Basicamente ele pode armazenar apenas dois valores: True ou False.

Estruturas de decisão

Estruturas de repetição

Tratamento de exceções

Tipos de dados não tão básicos

Leitura e escrita de arquivos

Módulos

APIs para string

De volta à simples aplicação

Parte 2: Introdução a pygame

Um primeiro exemplo

Elementos da API pygame

Um jogo de memória

Um jogo animado