Dia 7 — [missão Python — parte 01]: refazendo os exercícios da Udacity

Mi
Just Trying to develop
4 min readJun 18, 2017

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:

  1. O usuário digita na entrada do programa quantas vezes quer tirar o intervalo
  2. O usuário digita na entrada do programa quantos minutos quer trabalhar até o intervalo
  3. 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
  4. 5 minutos antes do intervalo, o programa avisa que faltam 5 minutos para o intervalo
  5. Quando chega o tempo do intervalo, o programa avisa e carrega um video no browser dele
  6. 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

--

--

Mi
Just Trying to develop

Big data enthusiastic, studying new technologies by myself. Passionate about Italy, languages, concerts, games, sitcoms, movies, coffee, cartoons, karaoke, etc.