Dia 7 — [missão Python — parte 01]: refazendo os exercícios da Udacity
Eae?!
Anteontem perdi o dia me lascando com o GIT, mas à noite comecei a revisitar os pouquinhos exercícios que fiz no Programming Foundations with Python, um módulo gratuito da UDACITY bem legal. Ontem comecei a estudar (e a escrever este post) e aqui estamos :)
Ao invés de rever TODAS as aulas, preferi refazer os exercícios que já fiz até o momento, mas de forma melhorada.
P1 — Take a break
Descrição / passo a passo:
O que eu peguei agora é um ‘projetinho’ chamado “Take a break”. Resumindo é um programa que mostrar um vídeo no seu browser toda vez que você está há muito tempo no computador. No detalhe, desenhei ele para funcionar assim:
- O usuário digita na entrada do programa quantas vezes quer tirar o intervalo
- O usuário digita na entrada do programa quantos minutos quer trabalhar até o intervalo
- O usuário pressiona o “OK” para começar o programa. Vai aparecer uma mensagem com um texto e o horário de início
- 5 minutos antes do intervalo, o programa avisa que faltam 5 minutos para o intervalo
- Quando chega o tempo do intervalo, o programa avisa e carrega um video no browser dele
- Após o intervalo, aparece um pop-up avisando para retornar ao trabalho (ou avisando que seu trabalho terminou)
Revi o código que fiz a primeira vez, mas achei que seria interessante analisar também os aspectos técnicos — e escrevê-los para não esquecer hihi :D ), então desmembrei o meu programa em pequenos programas teste para ver o funcionamento de cada função individualmente.
Para usar cada uma das funções, foi necessário referenciar os respectivos módulos. Então, como boa ‘coboleira’ (hihi), achei interessante olhar com bastante carinho.
O Python:
Não vou entrar em detalhes da linguagem (mesmo os introdutórios… isso fica para outro post rs), mas acho legal falar um pouco sobre a estrutura.
Buscando a internet “estrutura da linguagem Python”, eu achei muita coisa relacionada à estrutura de dados. Então vou colocar aqui o entendimento que tive a partir de uma das aulas do Udacity (vocês que manjam, por favor, não me xinguem, mas se eu escrever alguma merda aqui, me corrijam pelo amor de Deus! Hihi :) ):
A Python Standard Library é a estrutura e a biblioteca padrão. Nela existem milhares de módulos; dentro deles, as funções; Cada módulo tem ‘foco’, e cada função dentro dele tem um objetivo específico. Exemplos:
- time: Assim como o datetime, tem funcionalidades relacionadas ao tempo. Ele está disponível para todas as versões mas nem todas as funções dentro dele estão disponíveis para todas as plataformas. Existem algumas observações sobre o uso que podem ser vistas aqui. No exercício-programa, usamos ctime (para mostrar a hora de início do programa) e sleep (para deixar o programa sem fazer nada por um determinado período).
Além do módulo time, na primeira vez que fiz o exercício, usei os seguintes:
- webbrowser: usado para permitir a exibição de documentos baseados na WEB [função open, para abrir o browser carregando um vídeo legal]
- ctypes: essa biblioteca tem funções estrangeiras pra Python, funções e tipos de dados compatíveis com C e outras DLLs compartilhadas. Estou usando no exercício porque uso o messageBox, que usarei para avisar sobre os intervalos e sobre o início.
Os testes ‘individuais’ no shell:
Fui fazendo os códigos aos poucos para ir rodando no shell e ver o resultado deles individualmente, com módulos diferentes;
- Entrada:
Pesquisei maneiras diferentes de trabalhar com entrada de dados. Achei essas opções aqui:
num1 = input('Entre com o 1º valor: ')nome = raw_input("Digite o seu nome: ")
Fiz um código besta para receber um número e exibir na tela;
>>> qtd_min_trab = input('Digite qtos min de trabalho: ')
... print('Vc digitou: '), qtd_min_trab
Digite qtos min de trabalho: 33
Vc digitou: 33
- Deixando o programa “em espera”:
Aqui fiz um código para receber um número, mostrar o horário de início, esperar 15 segundos e depois mostrar o número digitado na ela;
>>> import time
... print time.ctime()
... qtd_min_trab = input('digite um nunero: ')
... time.sleep(15)
... print('vc digitou: '), qtd_min_trab
... print time.ctime()
Sun Jun 17 13:54:54 2017
digite um nunero: 44
vc digitou: 44
Sun Jun 17 13:55:11 2017
- MessageBox:
Eu queria fazer uma interface bonitinha (achei um framework que parece bacana, o Tkinter), mas estava dando muito trabalho para entender e eu queria fazer uns testes, então abandonei a ideia de usar o Tkinter agora (mas vou usar quando for fazer uma melhoria no exercício-programa.
Continuando… quando fiz o curso no windows, usei o módulo ctypes e a seguinte função:
import ctypes
ctypes.windll.user32.MessageBoxW(0, "Título", "mensagem", 1)
Mas não funcionou rodando no Linux, então pesquisei “popup Python”, achei este link aqui no StackOverFlow com algumas opções:
import tkMessageBox
tk.MessageBox.showinfo(title="Título", message="Mensagem")
Não funcionou, então tentei assim:
import tkMessageBox
tkMessageBox.showinfo(title="Título", message="Mensagem")
Mas como resultado abriu duas janelas (uma toda em branco e a outra com a configuração que coloquei). Tentei então o easygui:
import easygui
easygui.msgbox("Mensagem", title="Título")
Mas ele reclamou que o módulo não estava instalado, então instalei (sudo pip install easygui) e rodei de novo. E deu certo (só abriu uma janela feinha.
Achei também o PyMsgBox (a documentação completa está aqui:
import pymsgbox
pymsgbox.alert('Mensagem', 'Título')
- abrir o vídeo no broswer:
Aqui um código que vai abrir um vídeo no browser:
import webbrowser
webbrowser.open("https://www.youtube.com/watch?v=DLHAiojuUq0")
5: True
Foi criada uma nova janela em uma sessão existente do navegador.
No próximo post eu conto sobre como foi juntar todos os códigos em um programa só :)
Arrivederci!
Mi
Histórico dos testes no shell:
https://github.com/millena84/Curso-Udacity-Python/blob/master/P1-break-time-v1.html (vai abrir o código fonte do HTML gerado com o DreamPie)
Fontes consultadas:
Modulos e pacotes — Python Brasil
Modulos — O tutorial do Python (turing.com.br)
Módulos e pacotes em python
Módulos — wiki python (turing)
O que é preciso para começar a programar em Python?
Tudo que você precisa para desenvolver em Python
Aprendendo a programar em Python — Trabalhando com entrada de dados
Entrada de dados (Gitbook — Gabriela Cavalcante)
Variáveis, expressões, comandos
Curso de Python — Aula 10 — Entrada de dados e formatação de strings
Tkinter: Interfaces gráficas em Python
Documentação time
Documentação PyMsgBox