Um dos campos da tabela verbo em nossa base conjuga é o chamado regular. Até o momento, sempre que um verbo novo é inserido na base de dados nós simplesmente confiamos no julgamento do usuário e marcamos com o número um o campo regular, na linha correspondente ao nome do verbo. Que tal, porém, verificar também em uma fonte confiável, na web, se o verbo é regular ou irregular?
#!/usr/bin/python
# -*- coding: iso-8859-15 -*-
# Programa que conjuga verbos regulares
# versão 0.08 por Cesar Brod em 29/08/2013
# variáveis iniciadas por "seu_" são fornecidas pelo usuário
# variáveis terminadas por "_bd" tem origem na base de dados
# variáveis terminadas em "_web" são relativas a consultas online
# Informações de conexão à base de dados:
# carrega a biblioteca de funções de acesso e manipulação de dados
import MySQLdb
# informa os dados da conexão
dados = MySQLdb.connect(host="192.168.1.104", # endereço do servidor MySQL
port=3306, # porta usada na conexão
user="root", # usuário
passwd="artista", # senha
db="conjuga") # nome da base
# cria o cursor para a manipulação de dados
cobra = dados.cursor()
# Informações relativas à conexão com a web
# carrega a biblioteca de funções para o acesso web
import urllib2
print chr(27) + "[2J" # limpa a tela
# Solicita informações do usuário
print '===================================================='
print 'Programa conjugador de verbos regulares em português'
print '===================================================='
print
seu_nome = raw_input("Digite seu primeiro nome : ")
seu_sobrenome = raw_input("Digite seu último sobrenome: ")
# Verifica se o usuário já existe na base
existe = cobra.execute(("SELECT nome, sobrenome \
FROM usuario WHERE nome=%s AND sobrenome=%s"),
(seu_nome, seu_sobrenome))
if existe > 0:
print
print 'Obrigado por usar novamente nosso conjugador, ' \
+ seu_nome + ' ' + seu_sobrenome + '!'
print
else:
print 'Essa é a primeira vez que você usa nosso conjugador, ' \
+ seu_nome + ' ' + seu_sobrenome + '!'
cobra.execute("INSERT INTO usuario (nome, sobrenome, visitas) \
VALUES(%s, %s, %s)", (seu_nome, seu_sobrenome, 1))
dados.commit()
# Listas com as terminações de verbos regulares
pessoas = ['Eu', 'Tu', 'Ele', 'Nós', 'Vós', 'Eles'];
conjuga_ar = ['o', 'as', 'a', 'amos', 'ais', 'am'];
conjuga_er = ['o', 'es', 'e', 'emos', 'eis', 'em'];
conjuga_ir = ['o', 'es', 'e', 'imos', 'is', 'em'];
# O usuário informa o verbo
seu_verbo = raw_input("Digite o infinitivo de um verbo regular: ")
# Consulta o Wikcionário para ver se o verbo é regular
print 'Aguarde um momento enquanto consulto o Wikcionário para saber'
print 'se o verbo ' + seu_verbo + ' consta como verbo regular.'
print
# primeiro, monta o endereço, incluindo o nome do verbo
endereco_web = 'http://pt.wiktionary.org/wiki/' + seu_verbo
# depois, cria a requisição para a busca
req_web = urllib2.Request(endereco_web, headers={'User-Agent': "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:23.0) Gecko/20100101 Firefox/23.0"})
# busca o conteúdo
conteudo_web = urllib2.urlopen(req_web)
# armazena o conteúdo
conteudo_web = conteudo_web.read()
# pesquisa se o verbo é regular
if ("Verbo regular da " in conteudo_web):
print 'Confirmado: ' + seu_verbo + ' é um verbo regular!'
print 'Agora verificarei se ele já foi conjugado anteriormente.'
print
# Verifica a existência do verbo na base de dados
existe = cobra.execute(("SELECT verbo \
FROM verbo WHERE verbo=%s"),
(seu_verbo))
if existe > 0:
cobra.execute(("SELECT frequencia FROM verbo WHERE verbo=%s"), (seu_verbo))
frequencia_bd = cobra.fetchone()
frequencia_bd = frequencia_bd[0] # extrai o primeiro dado da tupla
print 'O verbo ' + seu_verbo + ' já foi conjugado ' + str(frequencia_bd) + ' vezes.'
cobra.execute("UPDATE verbo SET frequencia = %s WHERE verbo = %s", (frequencia_bd + 1, seu_verbo))
dados.commit()
else:
print 'Essa é a primeira vez que conjugo ' + seu_verbo + '!'
cobra.execute("INSERT INTO verbo (verbo, frequencia, regular) \
VALUES(%s, %s, %s)", (seu_verbo, 1, 1))
dados.commit()
termina_em = seu_verbo[-2:] # separa a terminação do verbo
# De acordo com a terminação do verbo, conjugamos apropriadamente
if termina_em == 'ar':
for i in range(6): # repete seis vezes, percorrendo a lista
print pessoas[i]+' '+seu_verbo[:-2]+conjuga_ar[i]
elif termina_em == 'er':
for i in range(6): # repete seis vezes, percorrendo a lista
print pessoas[i]+' '+seu_verbo[:-2]+conjuga_er[i]
elif termina_em == 'ir':
for i in range(6): # repete seis vezes, percorrendo a lista
print pessoas[i]+' '+seu_verbo[:-2]+conjuga_ir[i]
else:
print 'Tem certeza que '+seu_verbo+' é um verbo regular?'
print
print 'O Wikcionário é um projeto colaborativo e pode ser que ' + seu_verbo
print 'ainda não conste nele. Se esse for o caso, visite a página web'
print 'http://pt.wiktionary.org e complemente a informação sobre ' + seu_verbo + '.'
print
print 'Obrigado por usar nosso conjugador!'
print
dados.close()