/alura-python-demo

Alura - Curso Python 3: Criando um jogo com a nova versão 3 do Python

Primary LanguagePython

alura-python-demo

Notas de aula dos Cursos Alura sobre Python 3

  • Alura | Curso Python 3 parte 1: Introdução à nova versão da linguagem
  • Alura | Curso Python 3 parte 2: Avançando na linguagem

Python 3 parte 1

Tipagem de dados

  • Função type() para imprimir o tipo da variavel. Ex: pais=brasil type(mes)

class 'str''

  • Linguagem dinâmica - tipagem dinâmica

  • O tipo da variável vai ser igual ao valor do que ela recebe. Ex: variavel = 1 Tipagem int variavel = texto Tipagem string

  • Em Python, a variável só passa a existir quando atribuímos um valor, como no exemplo abaixo: idade = 12

  • O Python utiliza por convenção o padrão Snake_Case para nomes de variáveis (ou identificadores). idade_esposa = 20 perfil_vip = 'Flávio Almeida' recibos_em_atraso = 30

  • Identação 4 espaços ou 1 tab

Condição Se

Estrutura do IF e ELSE

  • elif: aceita
  • else: não aceita condição, apenas a instrunção que será executada

If (condicao): // faça tal coisa elif(condicao): // faça tal coisa else: // faça tal coisa ###3e Seguem todas as operadores de comparação:

< - menor que
> - maior que
<= - menor ou igual a
>= - maior ou igual a
== - igual a
!= - diferente de

Laço de repetição

Laço 'enquanto'

while (condition):

Laço for

for contador in range(1, 11):
    print(contador)

Função range

range(start, stop, [step])

Onde o step é opcional. Como queremos "pular" de 3 em 3, começando com 1 (start) até 10 (stop), podemos escrever:

String interpolation

Saiba mais na Documentação: https://docs.python.org/3/library/string.html#formatexamples uso de colchetes dentro de strings para formatar com váriaveis Ex:

print("Tentativa {} de {}".format(rodada,total_de_tentativas))

Para utilizar outra ordem dos parametros

print("Tentativa {1} de {0}".format(1,10))

Resultado: Tentativa {10} de {1}"

Formatação de floats

Primeiro precisamos dizer para ela que estamos recebendo um valor do tipo float, passando :f dentro das chaves da string:

print("R$ {}".format(1.59)) R$ 1.59

Para formatar as casas decimais depois do ponto

>>> print("R$ {:.2f}".format(1.59))
# R$ 1.59
> >>> print("R$ {:.2f}".format(1.5))
# R$ 1.50
>>> print("R$ {:.2f}".format(1234.50))
# R$ 1234.50

Interpolação - Python 2 vs Python 3

Python 3

"{} {}".format(1, 2)

Python 2

"%d %d" % (1, 2)

Mais exemplos, sempre comparando o Python 2 com Python 3, existem no link: https://pyformat.info/

  • No Python 3.6+ A partir da versão 3.6 do Python, foi adicionado um novo recurso para realizar a interpolação de strings. Esse recurso é chamado de f-strings ou formatted string literals.

nome = 'Maria' print(f'Meu nome é {nome}') Meu nome é Maria

  • Quando colocamos a letra f antes das aspas, informamos ao Python que estamos utilizando uma f-string. Dessa forma o Python consegue, em tempo de execução, captar a expressão que está entre chaves ({ }) e avaliá-la

nome = 'Maria' print(f'Meu nome é {nome.lower()}') Meu nome é maria

Python builtin

Funções embutidas por padrão no Python https://docs.python.org/3/library/functions.html

Gerando números aleatórios

import random
random.random()
0.6022965518496559

Arrendondando um número decimal

numero_random = random.random() * 100
numero_random
#resultado sem o round()
> 18.895629671768187
int(numero_random)
#resultado com convertendo para inteiro
> 18
round(numero_random)
#resultado com o round()
19

Outras funções

Função abs(valor) usada para transformar o número em um valor absoluto e positivo.

pontos_perdidos = abs(numero_secreto - chute)

O objetivo dessa função é retornar o número desconsiderando o seu sinal

Float division

Repare que recebemos o valor float 1.5 como resposta. O operador / sempre traz um float, mesmo se não for necessário, por isso ele também é chamado de float division:

>>>  3 / 2
1.5

Criar Funções

Lembrando que é consenso usar a nomenclatura snake_case:

Definir:

## arquivo.py
def funcao():
    // todo código aqui

Chamar:

import arquivo
    arquivo.funcao()

Uma função também pode receber parâmetros e retornar algum valor, por exemplo:

def soma(a, b):
     return a + b

A função soma recebe dois parâmetros (a e b) e retorna a soma. Ao chamar a função, podemos capturar o retorno:

s = soma(3, 4) 

Função main

Essa variável é a name, e ela é preenchida com o valor main caso o arquivo seja executado diretamente. Então é preciso fazer if para verificar se ela está preenchida ou não:

# adivinhacao.py

import random

def jogar():
    # código omitido

if (__name__ == "__main__"):
    jogar()

Python 3 parte 2: Avançando na linguagem

Tipo Booleano

O tipo bool para representar verdadeiro (True) e falso (False), por exemplo:

>>> existe = True
>>> type(existe)
<class 'bool'>

Manipulando Strings

Usando a função 'find()' para encontrar um caracter numa String. Ex:

palavra = "banana"
type(palavra)
<class 'str'>
palavra.find("b")
0

Interando em uma palavra

Uma palavra nada mais é do que uma sequência de caracteres. Podemos usar o laço for para iterar. Ex:

for letra in palavra_secreta:                                          
    if(chute == letra):                                                
        print(letra)

Algumas funções de String

.capitalize = retornar primeira letra como maiscula .strip = limpar espaço em branco .upper = transformar em letra maiscula

Algumas funções foram úteis para verificar se há alguma substring dentro da palavra, como por exemplo: find, startswith ou endswit

Estrutura de dados

Sequence Types: List, Tuple, range

Lista

O Python nos oferece uma estrutura de dados que nos permite guardar valores. Essa estrutura é a lista. Para criar uma lista, utilizamos colchetes ([]):

>>> valores = []
>>> type(valores)
<class 'list'>
>>> valores = [0,1,2,3,4]

Funções com lista Menor e Maior valor

>>> min(valores)
0
>>> max(valores)
4

Tamanho dos itens da lista

print(len(funcionarios))

Podemos adicionar elementos ao final da lista com o append, exibir e remover um elemento de determinada posição com o pop, entre diversas outras funcionalidades. Mais funcões especificas de lista aqui

A função .count()

contar o número de ocorrências de um determinado elemento em uma lista é a função .count() das listas:

valores = [ 0, 0, 0, 1, 2, 3, 4]
print(valores.count(0))
>>> 3

A função .index()

retorna o índice da primeira ocorrência de um determinado elemento em uma lista:

frutas = ['Banana', 'Morango', 'Maçã', 'Uva', 'Maçã', 'Uva']
print(frutas.index('Uva'))
>>> 3

Tupla

O Python oferece a estrutura tupla, utilizamos com parenteses ( )

  • Estrutura imutável
  • Não é possível adicionar novos elementos após a criação
  • Ideial para quando sabemos a quantidade de itens a serem inseridos na criação Ex de uso:
>>> dias = ("Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado")
>>> type(dias)
<class 'tuple'>

Principais diferenças entre list e tuple:

  • list usa colchetes [] para inicialização, tuple usa parênteses ()
  • list é mutável, tuple é imutável

Entre essas sequências, list é a única que é mutável. tuple, str e range são imutáveis.

Tuplas dentro de uma lista

instrutor1 = ("Nico", 39)

instrutor2 = ("Flávio", 37)

instrutores = [instrutor1, instrutor2]

instrutores

[('Nico', 39), ('Flávio', 37)]

Converter listas em tuplas

Função Buit-in:

  • De lista para Tupla
tuple()
palavras = []
#Tupla com conteúdo da lista
nova = tuple(palavras)
  • De Tupla para Lista
#Lista com conteúdo da tupla
list()
outra = list(nova)
#Lista fazia
nova = []

Set

Um set é uma coleção não ordenada de elementos. Cada elemento é único, isso significa que não existem elementos duplicados dentro do set. Exemplo de criação:

colecao = {11122233344, 22233344455, 33344455566}

Repare que usamos {} chaves para declarar os elementos iniciais

Dictionary

instrutores = {'Nico':39, 'Flavio':37,'Marcos:30':40}
instrutores['Flavio']
# 37

Repare que usamos as chaves {} (como se fosse um set), mas sempre tem em pares.

List Comprehension

palavra_secreta = "banana".upper()
letras_acertadas = ["_" for letra in palavra_secreta]

Com if:

inteiros = [1,3,4,5,7,8,9]
pares = []
for numero in inteiros:
    if numero % 2 == 0:
        pares.append(numero)

Arquivos

  • Abrindo arquivos com função built-in:
open()
  • A função recebe um ou mais parâmetros: O nome do arquivo e o modificador de acesso.
  • arquivo = open("arquivo.txt,"a")
  • parametro "a" para 'append'
  • parametro "w" para 'write'
  • parametro "r" para 'read'
  • parametro "+b" para trabalhar com binário:
    • "wb"
    • "rb"

É uma boa prática fecharmos o arquivo depois de utilizá-lo para escrita ou leitura

arquivo.close()
  • Função readline() para ler apenas uma linha do arquivo:
arquivo = open('pessoas.txt', 'r')
linha = arquivo.readline()
print(linha)

Função with

Leitura de arquivos com a função with.

Repare que o with usa a função open. Repare também que não fechamos o arquivo. Isso não é mais necessário pois o Python vai cuidar disso e, mesmo com erro, garantirá o fechamento do arquivo! Muito melhor não?

with open("palavras.txt") as arquivo:
    for linha in arquivo:
        print(linha)

Sobre funções

1- Uma função é um bloco de código que pode ser guardado, para ser chamado assim que desejarmos, contanto que saibamos seu nome. Contudo, não é necessário sabermos a sua implementação. 2- A seguinte declaração de função é válida: 3- Em Python, a convenção é criarmos funções no padrão snake_case, isto é, cada palavra é iniciada com letras minúsculas e separadas por um underscore (_).