Script Python faz chover no seu terminal

A tarefa deste pequeno script Python é simular chuva no seu terminal.
O meu exemplo foi rodado com o Python 2, em uma máquina Debian Linux. Sinta-se à vontade para experimentar em outras plataformas contudo.

O script, abaixo, joga 100 gotas aleatórias de ‘chuva’ no seu terminal e é um ótimo exemplo do uso da função random no Python.

Se você não tiver um compilador ou interpretador Python disponível, no momento, experimente um destes compiladores/interpretadores online.

Veja o que mais o script faz:

  • usa o caractere “/” para representar as gotas de chuva. Mas você pode escolher qualquer outro.
    Se você trocar o caractere “/” para ” ‘ “, vai parecer que está caindo neve no seu terminal.
  • ao final da chuva, uma mensagem é exibida centralizada na tela.
  • roda em qualquer tamanho de terminal.
  • o código contém docstrings para descrever os parâmetros da função principal.

Segue o código:


import curses
import random
import time

myscreen = curses.initscr()
curses.curs_set(0) # suprime exibição do cursor
HEIGHT, WIDTH = myscreen.getmaxyx() 
RAIN = '/' # altere aqui a aparência da gota de chuva
TIME = 10 

def make_it_rain(window, tot_time, msg, wait_time, num_drops):
    """
    window    :: curses window 
    time      :: Tempo total da chuva
    msg       :: Mensagem exibida ao final da chuva
    wait_time :: Tempo entre cada tela
    num_drops :: Numero de gotas de chuva em cada cena
    """
    for _ in range(tot_time):
        for i in range(num_drops):
            x,y=random.randint(1, HEIGHT-2),random.randint(1,WIDTH-2)       
            window.addstr(x,y,RAIN)
        window.refresh()
        time.sleep(wait_time)
        window.erase()

    window.refresh()
    window.addstr(HEIGHT/2, int(WIDTH/2.7), msg)


if __name__ == '__main__':
    make_it_rain(myscreen, TIME, "A CHUVA ACABOU!", 0.1, 60)
    myscreen.getch()
    curses.endwin()

Eu gravei o meu script com o nome de chuva.py
Execute o código com o Python 2:

python2 chuva.py

Referências

http://codegolf.stackexchange.com/questions/107545/its-raining-in-terminal.
https://elias.praciano.com/2017/01/faca-chover-no-seu-terminal-com-este-script-python/.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 49 outros assinantes

Use as docstrings para documentar seu código Python

Se você está lendo isso, provavelmente sabe o quanto é importante documentar seu trabalho, desde o início.
Depois de escrito, o código ainda vai ser lido inúmeras vezes.
Programadores experientes conhecem bem a situação de revisitar código escrito meses atrás e — se não estiver bem documentado — ficar coçando a cabeça para entender “o que diabos esta porcaria faz?”
O Python facilita escrever código legível e você só precisa se aproveitar disso.
Um destes recursos são as documentation strings ou texto de documentação — ou docstrings.

Quando posicionada adequadamente, dentro de uma função, a docstring pode informar o que a função faz e como usar corretamente seus parâmetros.
Em editores e IDEs avançadas, o texto da docstring passará a ser exibido a cada vez que a função for invocada dentro do código — como uma ajuda sensível ao contexto.
python docstrings in komodo editor
Na figura, acima, é possível ver o exemplo dentro do Komodo Editor.
Use 3 aspas simples para iniciar uma docstring e, novamente, para finalizar.
Veja um exemplo:

def minha_funcao(parametro=True):
    ''' texto de documentação específico da função minha_funcao
    que leva um único parâmetro, que é verdadeiro por padrão
    '''
    
minha_funcao()

As aspas triplas podem ser usadas aonde você quiser. Serão mais comumente encontradas em docstrings.
Mas você pode usá-las apenas para inserir comentários em múltiplas linhas, em qualquer ponto do seu codigo.

As aspas simples triplas informam ao interpretador Python que se trata de uma string em múltiplas linhas.
Tudo o que você quiser escrever cabe dentro deste espaço — o que inclui, além do texto, as quebras de linha, os espaços em branco ou outras aspas.
Se você for usar docstrings para documentar uma função, tenha em mente que elas devem ser iniciadas logo abaixo da função, como no exemplo dado, logo acima.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 49 outros assinantes