Aprenda Python

  • Página Inicial
  • Contato!
  • Tudo sobre Python Parte 1!
  • Tudo sobre Python Parte 2!
  • Tudo sobre Python Parte 3!
  • Tudo sobre Python Parte 4!
  • Tudo sobre Python Parte 5!
  • Tudo sobre Python Parte 6!
  • Tudo sobre Python Parte 7!
  • Tudo sobre Python Parte 2

    Utilizando Módulos

    Para entender essa aula, vamos pegar como exemplo um carro básico, que é muito comum ser comprado, mas só tem o básico (para transporte, ter o motor, volante e tudo que é necessário para o carro funcionar), e não tem itens opcionais como direção hidráulica, vidros e travas elétricas, ar condicionado e etc., mas são coisas que podemos instalar nele posteriormente. Os módulos do Python também podemos importar assim que forem sendo predefinidos, o Python trabalha por pacotes, assim como outras linguagem como o Java.

    Vamos supor que os programas sejam como o corpo humano e as bebidas, comidas e doces são como as bibliotecas, e dentro das bebidas tem vários tipos de bebidas, assim como as comidas e doces, no exemplo podemos importar todos ou uma bebida, comida ou doce específico.

    Uma biblioteca comum no Python é o math, que contém várias funcionalidades para usarmos com números. Veja algumas das funcionalidades dela:

    Funcionalidade O que ela Faz?
    fabs Retorna o número absoluto (positivo)
    ceil Arredonda pra Cima
    floor Arredonda pra Baixo
    trunc Trunca o Número (tira os números decimais sem arredondar).
    pow Potência
    sqrt Raiz Quadrada
    factorial Fatorial

    Vamos ver na prática um exemplo simples pra calcular raiz quadrada:

    
    import math
    
    num = int(input("Digite um número: "))
    raiz = math.sqrt(num)
    
    print("A raiz de {} é igual à {}".format(num, raiz))
    
    

    Pode ver que primeiro fizemos a importação, e depois fizemos a operação com a função math.sqrt.

    Podemos fazer com arredondamento também, dessa forma:

    
    import math
    
    num = int(input("Digite um número: "))
    raiz = math.sqrt(num)
    
    print("A raiz de {} é igual à {}".format(num, math.ceil(raiz)))
    
    

    Com um alias:

    
    import math as m
    
    num = int(input("Digite um número: "))
    raiz = m.sqrt(num)
    
    print("A raiz de {} é igual à {}".format(num, m.ceil(raiz)))
    
    

    Ou fazendo a importação específica da biblioteca, dessa forma:

    
    from math import sqrt, floor
    
    num = int(input("Digite um número: "))
    raiz = sqrt(num)
    
    print("A raiz de {} é igual à {}".format(num, floor(raiz)))
    
    

    Como dessa forma importamos a biblioteca específica, podemos usar as funcionalidades específicas diretamente.

    Veja outro exemplo, no qual usamos a biblioteca random:

    
    import random
    
    num = random.random()
    
    print(num)
    
    

    O random gera um número entre 0 e 1, mas você pode usar outros números e funcionalidades, veja um exemplo, que gera um número entre 1 e 10:

    
    import random
    
    num = random.randint(1, 10)
    
    print(num)
    
    

    Temos também bibliotecas para manipulas datas, por exemplo:

    
    from datetime import datetime
    
    data = datetime.now()
    
    dia = data.day
    mes = data.month
    ano = data.year
    
    ds = data.weekday()
    
    hora = data.hour
    minuto = data.minute
    segundo = data.second
    
    semana = ("Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado", "Domingo")
    
    print("{:0>2}/{:0>2}/{}".format(dia, mes, ano))
    print("{:0>2}:{:0>2}:{:0>2}".format(hora, minuto, segundo))
    print(semana[ds])
    
    

    PS: No Python, a semana é contada a partir da Segunda, a partir do zero. Caso queira a data do dia no formato americano (YYYY-MM-DD), basta chamar datetime.now().date().

    E também para gerar hashs de senhas:

    
    from hashlib import md5, sha1, sha256
    
    texto = str(input("Insira o texto do qual deseja verificar o hash: "))
    
    cod = texto.encode("utf-8")
    
    hashMD5 = md5(cod).hexdigest()
    hashSHA1 = sha1(cod).hexdigest()
    hashSHA256 = sha256(cod).hexdigest()
    
    print("")
    
    print("Hash MD5 de \"{}\": {}".format(texto, hashMD5))
    print("Hash SHA1 de \"{}\": {}".format(texto, hashSHA1))
    print("Hash SHA256 de \"{}\": {}".format(texto, hashSHA256))
    
    

    Podemos usar a biblioteca os para limpar a tela de console do Python:

    
    import os
    
    texto = str(input("Digite algo: "))
    
    os.system("cls" if os.name == "nt" else "clear") # nt é referente ao Windows
    
    print(texto)
    
    

    PS: Podemos usar outros comandos do sistema também.

    Pegar caminho:

    
    import os
    
    caminho = os.getcwd()
    
    print(caminho)
    
    

    Mover entre pastas:

    
    import os
    
    varAmb = os.environ["USERNAME"] # Pega variável de ambiente com nome do usuário
    
    novo = "C:\\Users\\{}\\Desktop".format(varAmb)
    
    os.chdir(novo) # Muda caminho
    
    print(os.getcwd())
    
    

    Cria diretórios:

    
    import os
    
    varAmb = os.environ["USERNAME"] # Pega variável de ambiente com nome do usuário
    
    novo = "C:\\Users\\{}\\Desktop".format(varAmb)
    
    os.chdir(novo)
    
    os.mkdir("teste") # Cria pasta
    
    print(os.listdir()) # Lista arquivos do caminho
    
    

    Abrir arquivo especificado:

    
    import os
    
    varAmb = os.environ["USERNAME"] # Pega variável de ambiente com nome do usuário
    
    novo = "C:\\Users\\{}\\Desktop".format(varAmb)
    
    os.chdir(novo)
    
    os.startfile("arquivo.txt") # Abre um arquivo especificado
    
    

    Renomeando arquivos e pastas:

    
    import os
    
    varAmb = os.environ["USERNAME"] # Pega variável de ambiente com nome do usuário
    
    novo = "C:\\Users\\{}\\Desktop".format(varAmb)
    
    os.chdir(novo)
    
    os.rename("arquivo.txt", "arq.txt") # Renomeia, na ordem antigo e novo nome
    
    

    Remover arquivos e diretórios:

    
    import os
    
    varAmb = os.environ["USERNAME"] # Pega variável de ambiente com nome do usuário
    
    novo = "C:\\Users\\{}\\Desktop".format(varAmb)
    
    os.chdir(novo)
    
    os.remove("arq.txt") # Remove arquivo
    
    os.rmdir("test") # Remove pasta
    
    

    Se precisar de uma biblioteca e ela não estiver disponível, basta clicar na lâmpada vermelha do Pycharm pra instalar. Existem várias bibliotecas que podem ser adicionadas. Também podemos instalar pelo PIP digitando pip3 install nomedopacote (e usamos pip3 install --upgrade pip3 para atualizar o PIP e o comando pip install -U $(pip freeze | awk '{split($0, a, "=="); print a[1]}') para atualizar todos os pacotes). Em alguns sistemas o PIP pode ser atualizado usando o comando python3 -m pip install --upgrade pip, assim como pode ser necessário o mesmo para instalar pacotes (como python3 -m pip install nomedopacote).

    Veja um exemplo de uso de biblioteca de emoticons:

    
    import emoji
    
    print(emoji.emojize("Olá Mundo! :earth_americas:"))
    
    

    Manipulando Texto

    Uma frase em programação é conhecida como cadeia de caracteres ou string, sempre representadas entre aspas simples ou duplas.

    No caso do Python, em cada "mini-espaço" da memória fica um caractere, começando a partir do zero. A separação delas é chamada de fatiamento de string.

    No exemplo abaixo, o número pegará apenas o caractere da posição três (frase[3]):

    
    frase = "Curso em Vídeo Python"
    print(frase[3])
    
    

    Ao colocar um outro número após os dois pontos, ele conta até essa posição, como no exemplo, que conta do três ao doze (frase[3:13]):

    
    frase = "Curso em Vídeo Python"
    print(frase[3:13])
    
    

    PS: Observe que no caso acima, ele é contado até o doze, o treze não é contado.

    Se não indicar o início, ele conta a partir do zero até o limite, se não indicar o fim, ele conta do limite até o final. Por exemplo:

    
    frase = "Curso em Vídeo Python"
    print(frase[:13])
    print(frase[3:])
    
    

    Também podemos fazer com que ele pule de dois em dois ou outro intervalo:

    
    frase = "Curso em Vídeo Python"
    print(frase[1:15:2])
    
    

    Sem indicar o início, o fim ou ambos, também funciona:

    
    frase = "Curso em Vídeo Python"
    print(frase[4::2])
    print(frase[:11:2])
    print(frase[::2])
    
    

    Uma dica, se tiver frases longas, textos e coisas para imprimir, podemos pular várias linhas, colocando tudo entre três aspas no começo e três no fim (dessa forma, tudo é pré-formatado, como a tag pre do HTML, dessa forma:

    
    print("""Não confunda anti-herói com vilão.
    O vilão é o inimigo do mocinho e o anti-herói é aquele cara de personalidade, que salva as pessoas, que vai atrás de seus objetivos, que movimenta o mundo,
    mas que se comporta de forma contrária aos heróis por não seguir as regras morais impostas pela sociedade.
    O lance dele é quebrar paradigmas, mas resolver os problemas.""")
    
    

    Lembrando que no Python, toda frase é um objeto, o que permite utilizar funcionalidades, como essa que conta quantos "o" tem na frase:

    
    frase = "Curso em Vídeo Python"
    print(frase.count("o"))
    
    

    PS: Lembrando que ele diferencia maiúsculas e minúsculas, nesse caso, podemos usar o upper, assim:

    
    frase = "Curso em Vídeo Python"
    print(frase.upper().count("O"))
    
    

    Como visto, usamos o upper() para transformar o texto em maiúscula, podemos fazer o mesmo com minúsculas usando lower(), assim:

    
    frase = "Curso em Vídeo Python"
    
    print(frase.upper()) # Transforma em maiúscula
    print(frase.lower()) # Transforma em minúscula
    
    

    Usamos o len() para ver quantos caracteres tem na frase, dessa forma:

    
    frase = "Curso em Vídeo Python"
    print(len(frase))
    
    

    Para excluir espaços desnecessários no começo e no fim, usamos o strip(), assim:

    
    frase = "            Curso em Vídeo Python                 "
    print(len(frase.strip()))
    
    

    Inclusive, podemos fazer assim para verificar strings vazias:

    
    texto = str(input("Digite uma frase: "))
    
    print("A frase é {}!".format(texto.strip()) if texto else "Não foi Digitado Nada!") # Uma string vazia usamos como booleano, nessa comparação.
    
    

    Temos também o método replace() para mudarmos uma determinada palavra na string, dessa forma:

    
    frase = "Curso em Vídeo Python"
    print(frase.replace("Python", "Android"))
    print(frase)
    
    

    PS: Ele só altera na exibição no qual é chamado, não modifica uma string. Se quiser modificar, atribua novamente a variável, assim:

    
    frase = "Curso em Vídeo Python"
    frase = frase.replace("Python", "Android")
    print(frase)
    
    

    Podemos mostrar se uma palavra específica existe na string, assim:

    
    frase = "Curso em Vídeo Python"
    print("Curso" in frase)
    
    

    Ou mostrar a posição no qual a palavra está na string (contada a partir do 0):

    
    frase = "Curso em Vídeo Python"
    print(frase.find("Vídeo"))
    
    

    PS: Lembre-se que diferencia maiúsculas e minúsculas, se não encontrar, ele mostrará um número negativo.

    Para exibir pesquisando por minúsculas, podemos usar o lower(), assim:

    
    frase = "Curso em Vídeo Python"
    print(frase.lower().find("vídeo"))
    
    

    Podemos também splitar as palavras da string, assim:

    
    frase = "Curso em Vídeo Python"
    print(frase.split())
    
    

    Ou pegar apenas uma palavra splitada, assim:

    
    frase = "Curso em Vídeo Python"
    dividido = frase.split()
    print(dividido[0])
    
    

    Assim como pegar apenas uma letra de uma palavra específica:

    
    frase = "Curso em Vídeo Python"
    dividido = frase.split()
    print(dividido[2][3])
    
    

    PS: O split pode receber um parâmetro como divisor, por exemplo:

    
    frase.split(" ")
    
    

    Podemos usar isso para gerar arquivos de texto:

    
    nome = str(input("Digite o nome do arquivo: "))
    texto = str(input("Digite algo para escrevermos no arquivo: "))
    
    arquivo = open("{}.txt".format(nome.lower()), "w") # Para adicionar conteúdo sem sobrescrever, coloque "a" ao invés de "w"
    
    arquivo.write(texto)
    
    arquivo.close()
    
    

    E para ler eles, é assim:

    
    arquivo = open("arquivo.txt", "rt")
    
    for l in arquivo:
        print(l) # Atenção à identação
    
    arquivo.close()
    
    

    Condições (Parte 1)

    Até agora, nos programas em Python, tudo que fizemos foi sequencial, mas é possível criar condições (opções).

    Imagine por exemplo um carro, que precisa decidir se ele virará pra esquerda ou pra direita, e ambos terão caminhos totalmente diferentes para ele chegar até o destino. As condições funcionam mais ou menos dessa forma.

    Isso inclusive é muito usado em jogos, quando um personagem tem que decidir se ele salva o personagem um ou o personagem dois, por exemplo.

    As estruturas em programação são chamadas de "se" e "senão", representadas pelas palavras inglesas if e else. Nesse caso, ele executa apenas um bloco (ou o if ou o else, nunca os dois).

    Veja um exemplo de uso:

    
    tempo = int(input("Quantos anos tem seu carro? "))
    if tempo <= 3:
        print("Seu carro é novo!")
    else:
        print("Seu carro é velho!")
    # O print abaixo é executado em qualquer situação por não estar aninhado.
    print("FIM!")
    
    

    PS: Cuidado com o uso de comandos, observe que no caso acima, tudo que tiver grudado do lado esquerdo da tela será executado fora da condição (ou seja, será executado sempre), apenas o que tiver aninhado (com espaçamento) que será executado na condição específica. No caso acima, o "fim" é o único executado independente da situação, os outros prints são das condições e serão executadas dentro das mesmas por estarem na indentação delas.

    As condições if e else sempre usam tabulações em Python, diferente do Java, PHP, C, Javascript e outros que usam chaves).

    É só lembrar basicamente que o que está do lado esquerdo ou igual ao if e else será executado, o que tiver indexado (tabulado à direita) ao if e else só será executado dentro deles.

    Temos também condições simplificadas no Python, assim:

    
    tempo = int(input("Quantos anos tem seu carro? "))
    print("Seu carro é novo!" if tempo <= 3 else "Seu carro é velho!")
    print("FIM!")
    
    

    Esse modo acima funciona parecido com o operador ternário (que não existe no Python, mas existe em outras linguagens como o Java, C e PHP). Não é muito usado, mas pode ser utilizado em condições mais simples.

    Veja um exemplo prático disso:

    
    nome = str(input("Qual é o seu nome? "))
    if nome == "Bruce":
        print("Você é o Batman!")
    print("Bom dia, {}.".format(nome))
    
    

    No caso acima, o print indexado (com bom dia) será executado com o nome específico, o que está grudado do lado esquerdo está fora da condição e sempre será executado por isso.

    Outro exemplo com o else:

    
    nome = str(input("Qual é o seu nome? "))
    if nome == "Bruce":
        print("Você é o Batman!")
    else:
        print("Você não é o Batman!")
    print("Bom dia, {}.".format(nome))
    
    

    PS: Cuidado pra não aninhar o else dentro do if, se ele for aninhado, o código dará erro, ele tem que ficar do lado esquerdo igual ao if do qual ele pertence.

    Veja outro exemplo, com notas:

    
    n1 = float(input("Digite a primeira nota: "))
    n2 = float(input("Digite a segunda nota: "))
    m = (n1 + n2) / 2
    print("A sua média foi {:.1f}.".format(m))
    if m >= 6:
        print("Sua média foi boa! Parabéns!")
    else:
        print("Sua média foi ruim! Estude Mais!")
    
    

    Ou simplificando:

    
    n1 = float(input("Digite a primeira nota: "))
    n2 = float(input("Digite a segunda nota: "))
    m = (n1 + n2) / 2
    print("A sua média foi {:.1f}.".format(m))
    print("Parabéns!" if m >= 6 else "Estude Mais!")