Em muitas ocasiões você precisará que seus programas mantenham um conjunto de dados que possam ser reaproveitados entre várias execuções. Talvez você queira saber, por exemplo, se um determinado usuário é novo ou se já usou o seu programa anteriormente.
Abaixo, o programa conjugador de verbos, agora armazenando e buscando informações em um banco de dados MySQL:
#!/usr/bin/python
# -*- coding: iso-8859-15 -*-
# Programa que conjuga verbos regulares
# versão 0.07 por Cesar Brod em 28/08/2013
# variáveis iniciadas por "seu_" são fornecidas pelo usuário
# variáveis terminadas por "_bd" tem origem na base de dados
# 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()
# Solicita informações do usuário
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 'Obrigado por usar novamente nosso conjugador, ' \
+ seu_nome + ' ' + seu_sobrenome
else:
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'];
print 'Conjugarei um verbo regular para você'
print
# O usuário informa o verbo
seu_verbo = raw_input("Digite o infinitivo de um verbo regular: ")
# 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:
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?'
dados.close()