Tutorial Python v2
Tutorial Python v2
Linguagem Python
04/09/2020
Introdução
Neste tutorial será apresentado os conceitos básicos da linguagem de programação
Python. Não é necessário possuir nenhum conhecimento prévio em outras linguagens de
programação.
Python é uma linguagem de alto nível criada com o intuito de ser uma linguagem
simples de se aprender, fácil de ler e concisa. Foi criada em 1992 por Guido van Rossum e
desde então é desenvolvida de forma comunitária com a liderança da Python Software
Foundation.
Configurando o ambiente
Para este tutorial será utilizado a plataforma online repl.it que pode ser encontrada
no seguinte site: https://repl.it/. Ao acessar a página deve-se clicar em start coding. Em
seguida será pedido que você crie uma conta, faça isso e siga os passos que o próprio site
fornece. Na hora de escolher as linguagens deve-se escolher a linguagem python e mais
outras duas de sua preferência pois o site exige que se escolha ao menos três. No meu
caso ficou como na figura a seguir:
2
Em seguida será pedido que você verifique sua conta e faça uma introdução sobre
você mesmo, mas isso é opcional. Para os objetivos deste tutorial você deve selecionar a
opção Python logo após a linha “or start coding” como indicado na próxima figura.
3
Você será levado para uma nova página destinada a programação em Python.
No painel mais à esquerda são mostrados os nomes dos arquivos que estão sendo
editados. Ao se abrir pela primeira vez provavelmente haverá apenas o arquivo main.py.
No painel do meio é a área de edição, onde pode-se escrever ou modificar o código
Python. Por fim, no painel mais à direita fica o terminal contendo o REPL da linguagem e
também onde aparecem os resultados da execução do programa.
4
> 2 + 2
4
Hello World
Na programação é comum que ao se iniciar o aprendizado de alguma linguagem o
primeira programa escrito seja um “Hello World”, e é exatamente isso que será realizado
neste tutorial. O programa em Python pode ser escrito da seguinte forma:
print("Hello world")
5
Para facilitar a leitura do código pode-se adicionar comentários ao código que serão
ignorados pelo interpretador. Para isso deve-se usar o símbolo # em alguma posição da
linha, tudo escrito entre esse símbolo e o final da linha será considerado um comentário.
# Isso é um comentário
print("Oi amigo") # Outro comentário
# Isso também é um comentário
Variáveis
Uma das coisas mais básicas que um programa de computador deve ser capaz de
realizar é armazenar e modificar valores em memória. Para isso é feito uso das chamadas
variáveis. Uma variável pode ser criada em Python a partir do seguinte código:
a = 15
print(a)
No trecho de código cria-se uma variável chamada a e atribui-se a ela o valor 15. Na
linha seguinte usa-se o comando print para exibi-la. O nome de uma variável pode ter
qualquer comprimento desde que comece com uma letra, ou _, e não utilize nenhum
símbolo não alfanumérico. rato1, grafenó, Aphex_Twin e x_ são exemplos de nomes
válidos, pão quadrado, 123gameplays, tatu#mola? e comando-vermelho exemplos de
nomes inválidos.
A partir da linha em que se declara uma variável é possível modificar o seu valor,
veja a seguir.
var1 = 15
print(var1)
var1 = 23
print(var1)
var1 = var1 + 1
print(var1)
6
Nesse último exemplo declara-se a variável var1 com o valor 15, exibe-a, altera-se
seu valor para 23 e a exibe novamente. Na linha seguinte, var1 = var1 + 1, a variável é
modificada tal que seu novo valor é o valor antigo somado de 1, ou seja, 24. Lembrando
que só se pode usar uma variável do lado direito do sinal de igualdade se a mesma tiver
sido declarada anteriormente.
Também pode-se declarar variáveis com valores não numéricos como, por exemplo,
texto. Esses valores de texto devem ser escritos entre parênteses e são chamados de
strings.
b = "Hello World"
print(b)
a = 12
b = 1 23432
c = 9 9999
a = 12.3
b = 0 .6
c = 0 .0000001
Tentar realizar uma operação matemática entre tipos não numéricos causará um
erro e o programa não será executado.
a = "oi"
b = 1
c = a + b # causa um erro
nome = "Zbigniew"
sobre_nome = "Preisner"
nome_completo = nome + sobre_nome
print(nome_completo)
Ao executar esse código será exibido ZbigniewPreisner tudo junto. Isso ocorre
porque ambas as strings foram simplesmente unidas sem um espaço entre elas. Para
contornar esse problema, pode-se modificar a terceira linha para
As vezes também pode ser necessário converter um valor numérico para string e
vice-versa. Para isso é muito simples, basta usar os comandos int() float() e str().
inteiro = 12
versao_texto = str(inteiro)
print("o numero é " + versao_texto)
O contrário também é válido, pode-se converter uma variável de tipo string para um
valor inteiro ou real.
var1 = "12"
var2 = " 23.1"
a = int(var1)
b = float(var2)
print(a + b)
Para converter uma string para inteiro usa-se o comando int() e uma string para
real, float(). Uma string só pode ser convertida para um desses valores se ela contiver
um texto que represente um número, caso contrário será gerado um erro.
a = "123/3"
b = " 2321a"
c = " zero"
Erro
x = float(a) #
y = int(b) Erro
#
c = int(c) Erro
#
Entrada de Dados
Uma outra tarefa muito importante que os programas de computador devem
realizar é a leitura de dados inseridos pelo usuário. Para isso existe o comando input()
que ao ser executado pausa o programa e exibe uma mensagem pedindo que seja
digitado algo. Após ser digitado e ser pressionado Enter o comando retornará uma string
contendo o que foi digitado. Um exemplo deixará mais claro:
a = input("digite algo")
print("Eu digitei isso: " + a)
Observe que como o valor retornado por input() é uma string, é necessário
converter para um tipo inteiro antes de usá-lo em uma expressão matemática. Também
vale ressaltar que se o usuário digitar um valor não numérico o programa irá ser abortado
com um erro.
Expressões Booleanas
Expressões booleanas são expressões cujo valor resultante é verdade ou falso. Por
exemplo, a expressão a seguir gera um valor falso.
2 > 4
● and
○ Resulta em verdadeiro se ambos operandos são verdadeiros, falso caso
contrário.
● or
○ Resulta em falso se ambos operandos são falsos, verdade caso contrário.
● not
○ Inverte o valor do operador.
operador descrição
== Igual
!= Diferente
Condicionais
if e else
Em certos casos pode querer-se executar um trecho de código apenas quando um
certa condição for satisfeita. Para isso se faz uso das expressões condicionais através das
palavras-chave if e e
lse.
a = 12
if a == 12:
print("a é igual a 12")
Nesse outro exemplo, a linha 3 só será executada se a variável a for igual a 12, o
que é verdade nesse caso. Logo, a mensagem “a é igual a 12” será exibida. Lembrando que,
para realizar-se comparação de igualdade, deve-se usar dois sinais de igual, isto é, ==.
Todo o código que será executado pertencente ao if deve estar indentado em
relação ao comando, ou seja, deve-se adicionar um carácter Tab. Por isso o código a seguir
apresenta um erro.
11
a = "zig"
if a == "zig":
print("zag")
x = -10
if x < 0:
x = -x;
print("módulo de x é " + str(x))
print("Essa linha é sempre executada")
Em outras ocasiões pode ser útil ter um trecho de código que só será executado se
a expressão no if não for verdadeira. Para isso faz-se uso da palavra-chave else. Importante
ressaltar que para todo else deve haver um if.
Nesse exemplo é verificado se x é ímpar ou par. Para isso, lê-se x como um número
digitado pelo usuário e no if é verificado o resultado do resto da divisão de x por 2. Se for 0,
quer dizer que o número é par, caso contrário o código do bloco else será executado,
indicando que o número é ímpar.
elif
Outra palavra chave importante é elif que representa uma condição alternativa ao if,
um exemplo deixará mais claro.
print("para de mentir")
O trecho de código funciona da seguinte forma. Primeiro a variável é lida como uma
entrada do usuário. Em seguida, na linha 3, é verificado se o valor de idade é menor que
20. Caso seja, a linha 3 é executada e o programa se encerra. Caso não seja verdade, na
linha 5 é verificado se é menor que 40. Se for menor, então a próxima linha é executada e
o programa se encerra, caso contrário, passa-se ao elif seguinte e assim por diante. Caso
nenhum dos e lifs sejam satisfeitos então o else será executado.
Laços de Repetição
Outra funcionalidade básica que uma linguagem de programação deve fornecer é a
capacidade de que um mesmo código possa ser executado repetidas vezes. Os principais
tipos de laços são o while e o f or.
while
O laço while executa repetidamente um trecho de código enquanto uma expressão
booleana for verdadeira. No exemplo a seguir, a variável x é exibida enquanto seu valor for
menor que 10.
a = 0
while a < 10:
print(a)
a = a + 1
print("fim")
for
O laço for é parecido com o laço while, porém ele é utilizado, de forma simplificada,
para um número fixo de repetições. Ele é formado pela palavra chave for seguido de um
nome uma variável, palavra chave i n e o comando range.
print(a)
soma = 0
for x in range(4):
valor = float(input("digite um número: "))
soma += valor
print("A soma é " + str(soma))
break
Em algumas ocasiões pode-se querer sair de uma laço antes que o mesmo termine.
Para isso é usado a palavra-chave break. A seguir um exemplo de um programa que exibe
a raiz de um número digitado pelo usuário caso este seja positivo e caso contrário o
programa interrompe a sua execução.
while True:
a = float(input("Entre com com um número: "))
if a < 0:
break
else:
print(a**0.5)
14
Escopos
Um conceito muito importante em linguagens de programação é o de escopo. O
papel dele é indicar, basicamente, onde pode-se utilizar uma variável declarada. Considere
o seguinte exemplo.
a = 12
if True:
print(a)
Observe que a foi declarado fora de qualquer tipo de estrutura como if ou for.
Nesse caso pode-se usar a variável em qualquer lugar do programa, pois ela foi declarada
no que é conhecido como Escopo Global. Porém observe o próximo exemplo.
if True:
a = 12
print(a)
Esse código resultará em um erro, pois a foi declarado em um escopo interno e está
tentando-se usá-la no escopo global. Porém a variável poderia ser utilizada em um escopo
mais interno:
if True:
a = 12
for i in range(4):
print(a)
Listas
Muitas vezes pode ser útil ter a capacidade de representar um conjunto de valores
em uma única variável. Para isso existem as listas, que consistem em vários valores entre
colchetes e separados por vírgula.
print(lista1)
print(lista2)
print(lista3)
Para acessar um único elemento de uma lista faz-se uso de índices, isto é, o nome
da variável seguido de um número entre colchetes. Este número indica a posição do
elemento que se quer acessar. Ressaltando que a posição começa a ser contada a partir do
zero.
Pode-se usar também um número negativo como índice, nesse caso, a contagem
ocorre de trás para frente com -1 sendo o último elemento.
compras[0] = "suco"
compras[1] = "beterraba"
compras[2] = "batata"
compras[-1] = "curso de guerrilha"
print(compras)
Um comando muito útil que pode ser utilizado sobre listas é o len que retorna a sua
quantidade de itens. Com ele é possível percorrer listas da seguinte forma:
O laço for também pode ser usado para percorrer os elementos de uma lista
diretamente.
Nesse exemplo a cada repetição a variável a assume um dos valores da variável lista
em ordem, nesse caso, 4
, 2, 1 e 3.
Na verdade a única coisa que o comando for faz é iterar sobre os elementos de uma
lista. O range, apresentado na seção anterior, não faz nada além de criar uma lista de
números. Experimente digitar o seguinte no REPL da linguagem:
list(range(10))
lista = [67, 68, 69, 70, 71, 72, 73, 75, 77, 79, 83, 87, 88, 94]
soma = 0
for i in lista:
soma += i
print(soma)
Já o trecho de código a seguir verifica se duas listas de mesmo tamanho são iguais.
No trecho, a variável iguais indica se as listas são iguais, e por padrão ela foi definida
como True. No laço for, a cada iteração, a variável i assume um dos valores de 0 até 3 e o
usa para acessar uma dada posição das listas e compará-las. Caso uma das comparações
resulte em falso, a variável iguais assume o valor False e o laço é interrompido. Já quando
todas as comparações são verdadeiras, o laço é completado e iguais mantém o valor T rue.
Métodos de Listas
A linguagem Python oferece alguns comandos, chamados métodos, capazes de
realizar determinadas operações sobre listas. Eles são acessados colocando um ponto
após o nome da variável e em seguida o nome do método terminado em abre e fecha
parênteses. Alguns métodos recebem parâmetros os quais devem ficar no interior dos
parênteses. No código a seguir são apresentados alguns.
Compreensão de Listas
Listas podem ser criadas também através das denominadas compreensão de listas,
uma forma semelhante a notação de conjuntos encontrado na matemática.
[x for x in [1, 2, 3, 4, 5, 6] if x % 2 == 0]
Matematicamente:
18
Tuplas
Tuplas são semelhantes a listas, porém uma vez criadas não podem ser
modificadas. São declaradas como listas porém se utilizando parênteses.
Funções
Funções servem para evitar repetição de código além melhorar a organização e
clareza do código. Uma função é declarada com a palavra-chave def seguido do nome da
função, abre e fecha parênteses, dois pontos e, na próxima linha indentada, o corpo da
função.
def saudacao():
print("Hello")
No código acima foi definido uma função chamada saudacao que ao ser executada
exibirá a mensagem "Hello". Note que, ao executar esse código nada acontece, pois a
função foi apenas declara e não chamada.
Para chamar uma função deve-se escrever o nome dela seguido de abre e fecha
parênteses.
def hello():
print("Hello")
hello()
def hello(nome):
print("Hello " + nome)
hello("Krzysztof Penderecki")
É possível que funções retornem valores. Para isso deve-se usar palavra-chave
return seguido do valor a ser retornado.
def c ubo(x):
return x*x*x
a = cubo(3)
print(a)
Nesse exemplo cubo retorna o cubo de um número e esse valor retornado foi
armazenado em uma variável.
def p rimo(n):
for i in range(2, n-1):
if n % i == 0:
return False
return True
askara(a, b, c):
def b
delta = b**2 - 4*a*c
x1 = (-b + (delta**0.5)) / (2*a)
x2 = (-b - (delta**0.5)) / (2*a)
20
Observe que essa função retorna uma tupla, isto deve ser levado em conta ao
utilizar os valores retornados:
Funções também podem ser recursivas, isto é, podem chamar si mesmas. Uma
função recursiva muito conhecida é o fatorial que pode ser definido matematicamente por:
def f at(n):
if n <= 1:
return 1
else:
return n*fat(n-1)
Funções Lambda
Existe uma forma alternativa de declarar funções mais simples. Essa forma é
chamada de funções lambda. Um exemplo é apresentado a seguir.
Esses tipos funções não possuem nome e devem ser armazenadas em uma
variável. Os parâmetros vêm logo depois de lambda e separados por vírgula, e após os dois
pontos vem o corpo da função que deve ser uma expressão e é automaticamente
retornada. A função lambda do último exemplo retorna o quadrado de um número x. Já o
próximo exemplo retorna a média entre dois números.
a = quad(4)
b = media(a, 5)
Exemplo Final
Nesta seção será apresentado um exemplo para reforçar boa parte do que foi
abordado nesse tutorial. O exemplo consiste em um simples jogo da forca que rodará
diretamente do terminal. O código é apresentado a seguir e os principais pontos são
esclarecidos através de comentários.
print("| ")
elif e == 5:
print("| O ")
print("| ")
print("| /|\\")
print("| / \\")
print("-------------")
# Essa função verifica
# Se um elemento é membro de uma lista
def eh_elemento(e, lista):
for l in lista:
if e == l:
return True
return False
# Printa as lacunas da palavra a ser advinhada,
# exibindo apenas as lestras que foram faladas
def printa_palavra(letras, palavra):
saida = []
for l in palavra:
if eh_elemento(l, letras):
saida.append(l)
else:
saida.append("_")
for e in saida:
# O "end=1''" serve para que o print exiba uma mensagem
# sem pular linha
print(e," ", end='') # O "end=''" serve para que o print
# Verifica se todas as lestras da palavra ja foram faldas
def completou(letras, palavra):
for l in palavra:
if not eh_elemento(l, letras):
return False
return True
# É onde acontece o jogo
def jogo():
fim_de_jogo = False # Indica se o jogo acabou ou não
erros = 0 # Quantidade de letras faladas
palavra_secreta = "couve" # Palavra que será advinhada
letras_inseridas = [] # Letras que foram faladas
while fim_de_jogo == False:
desenha_forca(erros)
printa_palavra(letras_inseridas, palavra_secreta)
23
# Lê letra do usuário
letra_usuario = input("Entre com uma letra: ")
# Verifica se a letra ja foi falada antes
if eh_elemento(letra_usuario, letras_inseridas):
erros += 1
print("Essa letra ja foi")
# Verifica se a letra nao faz parte da palavra
elif not eh_elemento(letra_usuario, palavra_secreta):
erros += 1
print("Essa letra não faz parte da palavra")
# Insere letra na lista de letras faladas
letras_inseridas.append(letra_usuario)
# Verifica se o jogador ganhou o jogo
if completou(letras_inseridas, palavra_secreta):
fim_de_jogo = True
print()
printa_palavra(letras_inseridas, palavra_secreta)
print()
print("PARABÉNS VOCÊ GANHOU")
# Verifica se o jogador perdeu
elif erros >= 5:
desenha_forca(erros)
fim_de_jogo = True
print("VOCÊ PERDEU")
jogo() # Inicia o jogo