InFog

Um blog sobre GNU, Linux, Open Source, Desenvolvimento e Nerdices em Geral

Lançado/Released GeSpeak 0.4 Beta 2

Tags:

  
Olá pessoal!

Acabei de colocar os pacotes do GeSpeak versão 0.4 beta 2 para download no Google Code.

Nesta versão não precisamos mais escolher os idiomas ‘en’, ‘pt’, ‘es’, agora está tudo mais amigável! Os nomes dos idiomas agora são ‘english’, ‘brazil’, ’spanish’, etc, Tudo bem que estão em inglês, mas acredito que assim já é bem mais fácil para escolher. Ahh, quem pediu esta funcionalidade foi o Kretcheu. Valeu, Kretcheu!

Outra funcionalidade legal é a opção de gravar a saída em um arquivo WAV, essa foi pedida pelo Kalib. Aí está Kalib! Valeu pela sugestão =)

E você também pode ajudar o GeSpeak a progredir! Como? Através de sugestões como a dos amigos acima, programando ou traduzindo. Atualmente o GeSpeak é traduzido para Inglês e Português do Brasil. Para traduzir para novos idiomas baixe este arquivo e use o poedit (ou qualquer outro editor de textos) para fazer a tradução e depois me avise.

Bem por hoje é só, se nenhum problema ou bug for reportado até a semana que vem, eu lanço a versão final.

Hello people!

I have just added GeSpeak version 0.4 beta 2 packages for download at Google Code!

In this version we don’t need to choose languages like ‘en’, ‘pt’, ‘es’ anymore now everything is user friendly! The languages’ names are now ‘english’, ‘brazil’, ’spanish’, etc. Kretcheu was the one who asked for this. Thanks, Kretcheu!

Another new feature is to write output to a WAV file, this one was asked by Kalib. There it is, Kalib! Thanks for your suggestion =)

And you can also help GeSpeak to grow! How to do it? By suggesting new features, programming or translating. Actually GeSpeak is translated into English and Brazilian Portuguese. To translate GeSpeak into new languages download this file and use poedit (or any other text editor) to translate, after this just let me know.

Well, that’s it. If there are no problems or bugs reported until next weekend, then I release the final version.

InFog

2 Comentários

GeSpeak 0.3 Lançado!

Tags:

É com muita satisfação que anuncio o lançamento da versão 0.3 do GeSpeak! Finalmente!

Depois de incontáveis meses de pseudo desenvolvimento o GeSpeak alcançou um status de “estável”.

Ele foi totalmente reescrito para Python e GTK, não há mais o Glade para ajudar e nem o C++ para atrapalhar…

Bem, desta vez estou disponibilizando um pacote Debian/Ubuntu e também um pacote universal para qualquer distro.

Outra coisa legal é que agora o GeSpeak verifica quais os idiomas que o eSpeak suporta e inclui TODOS eles para você escolher.

Para quem não sabe o GeSpeak é um front end para o eSpeak, um sintetizador de voz para Linux e outras plataformas.

vejam ele em ação:

gespeak-03

Então é isso, acessem a página do projeto, baixem, usem e reportem os bugs =)

InFog

11 Comentários

Curso de Python – Aula 10 – Entrada de dados e formatação de strings

Tags: , ,

Olá alunos!

A aula de hoje vai começar um pouco diferente, vou mostrar o resultado do exercício “mega sena” da aula 9.

O exercício não retrata exatamente a Mega Sena real, já que o número de dezenas é menor e as dezenas sorteadas vão até 99, mas o que vale é a ideia, certo?

Resolvi colocar o exercício aqui por que alguns me mandaram e-mail dizendo que estavam com algumas dificuldades para encontrar a solução. Então aqui vai:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import random
num1 = ["0","1","2","3","4","5","6","7","8","9"]
num2 = ["0","1","2","3","4","5","6","7","8","9"]
#random.shuffle(num2)
sorteados = "Dezenas sorteadas: "
i = 0
while i < 5:
    dezena = "00"
    while dezena == "00":
        random.shuffle(num1)
        random.shuffle(num2)
        dezena = num1[0] + num2[0]
    sorteados += dezena + " "
    i += 1
print(sorteados)

Vejam que esta é apenas uma das maneiras de resolver o problema. Alguns alunos fizeram de formas diferentes que também dão certo, e alguns até utilizaram funções que eu nem mostrei na na aula, mas que serviram muito bem.

Na linha 3 é importado o módulo random, que é onde está a função shuffle() que é a responsável por “misturar as bolas com os números”. Nas linhas 4 e 5 são definidas duas listas com os números em formato de texto, talvez seja melhor trabalhar com números mesmo, mas eu achei que assim ficou simples para juntar os números e fazer as dezenas.

Na linha 6 eu começo a escrever o texto das dezenas sorteadas e na linha 7 eu inicio um contador para o número de dezenas sorteadas. Já na linha 8 começa o primeiro laço do programa, que vai fazer o sorteio se repetir até termos 5 dezenas

Na linha 9 eu já defini a dezena como “00″ (zero zero) e então vem mais um laço que deve se repetir enquanto a dezena for “00″.

Então vem a função shuffle() que embaralha as listas com os números, e logo depois a variável “dezena” rebe o valor do primeiro elemento de cada lista. Aqui acaba o laço, caso a dezena seja “00″ ele vai se repetir.

Acabando o laço na linha 14 adicionamos o valor sorteado à variável “sorteados” e adicionamos 1 ao contador. Isso vai se repetir até o contador alcançar o número 5. Quando o laço acaba é exibida a variável “sorteados” com as dezenas sorteadas.

Se vocês olharem bem para o código e até mesmo o executarem algumas vezes vão ver que podem cair dezenas iguais, o que não é bom, certo? Mas isso eu vou deixar para vocês resolverem =)

Bem, tem um assunto que em breve vamos tratar, o desenvolvimento de programas com GUIs em Python, para isso vamos usar o PyGTK. Isso ainda vai demorar um pouquinho, mas para quem quiser ver mais ou menos como funciona é só acompanhar o GeSpeak. O GeSpeak é um front end para o espeak, um sintetizador de voz para Linux. O GeSpeak já passou por algumas grandes mudanças de linguagem, mas acredito que o Python veio para ficar =) Então se você quiser conferir como é desenvolvido um programa em PyGTK é só fazer o checkout da versão de desenvolvimento do GeSpeak, como ele está no Google Code então isto é bem simples de ser feito, basta ter o subversion instalado e rodar este comando (em apenas uma linha):

svn checkout http://gespeak.googlecode.com/svn/branches/python/ gespeak-read-only

Isto vai criar um diretório chamado gespeak-read-only, dentro dele estão os arquivos .py, para rodar o GeSpeak use o executável gespeak:

./gespeak

O GeSpeak é desenvolvido por mim e pelo Walter Cruz, e se tiver mais alguém interessado em participar do projeto é só falar comigo =)

Agora chega de enrolação e vamos à aula de hoje!

Hora da aula!

A aula de hoje é uma base para a aula da semana que vem. Hoje veremos a entrada de dados do usuário e na semana que vem vamos fazer nossas primeiras funções, ou seja já estamos começando a deixar a fase do script, que é uma sequencia de instruções que é executada sem intervenção do usuário e vamos entrar na fase dos programas mais complexos que dependem do usuário para funcionar.

A função que vamos usar para receber os dados dos usuários é a raw_input(). Esta função lê dados na entrada padrão, que é o teclado na maioria das vezes, e depois retorna estes dados. A forma mais simples de armazenar os dados fornecidos pelo usuário é assim:

1
2
3
4
#!/usr/bin/python
# -*- coding: utf-8 -*-
nome = raw_input("Digite o seu nome: ")
print(nome)

Neste caso a variável “nome” irá armazenar o que for digitado pelo usuário e depois será exibida na tela.

Você também pode usar funções de conversão para os dados fornecidos. Vamos dizer que você queira números inteiros ou reais:

1
2
3
4
#!/usr/bin/python
# -*- coding: utf-8 -*-
inteiro = int(raw_input("Um número inteiro: "))
real = float(raw_input("Um número real: "))

Simples, não?

Agora vamos juntar o que vimos nas outras aulas com estas funções de entradas de dados. Vou fazer um pequeno exercício aqui, a ideia é fazer um programa para um colecionador de carros. Primeiro o sujeito vai dizer quantos carros ele tem, depois vai colocar o nome dos carros e por último a placa de cada um. Vamos ver como fica este código? Olha só:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/python
# -*- coding: utf-8 -*-
print("Bem vindo ao Colecionador de Carros 10.000 Plus!")
nome = raw_input("Qual é o seu nome? ")
print("Olá " + nome + ", vamos à sua coleção?")
quantidade = int(raw_input("Quantos carros o senhor tem? "))
i = 1
carros = []
placas = []
while i <= quantidade:
    carros.append(raw_input("Carro %i: " % i))
    i += 1
print("Agora as placas...")
i = 0
while i < quantidade:
    placas.append(raw_input("Placa do %s: " % carros[i]))
    i += 1
print("Hora de mostrar a sua coleção!")
i = 0
while i < quantidade:
    print("O %s tem placas %s" %(carros[i], placas[i]))
    i += 1
print("Então é isso, tchau!")

A única novidade aqui é a forma como eu exibi os valores dentro das frases, usando o %. O nome disso é “formatar strings”, e é um recurso muito útil. Ele funciona assim, string para formatar à esquerda, porcentagem, e valores à direita:

“Aqui %s incluído um texto” % “será”

Resultado: “Aqui será incluído um texto”

“Agora %s dois %s” % (“serão”, “textos”)

Resultado: “Agora serão dois textos”

Quando apenas um valor for inserido na string basta coloca-lo após o %, mas quando mais de um valor for adicionado é necessário coloca-los dentro de uma tupla, que é o caso do segundo exemplo.

Para inserir os valores você pode usar esta tabela simplificada:

Expressão Significado
%s Uma string
%c Caractere
%d Decimal, inteiro
%f Real (float)
%% Um ‘%’

A última opção é interessante, é assim que se mostra um símbolo % em uma string em Python.

Lição de casa

1) Sala de aula: Faça um programa que pergunte o número de alunos em uma sala de aula, depois pergunte o nome de cada um, após isso ele deve pedir 4 notas de cada aluno e fazer a média entre elas, se a média for maior que 6 o aluno está aprovado, senão reprova. No fim deve ser exibida uma tabela assim:

Nome do aluno – nota1, nota2, nota3, nota4 – media – aprovado/reprovado

Hoje é só esse exercício =) Divertido ele hehe.

InFog

8 Comentários

© 2009 InFog. All Rights Reserved.

This blog is powered by Wordpress and Magatheme by Bryan Helmig.