Created
September 30, 2020 18:11
-
-
Save Bemesko/9f170e69ecd14eb0adc57707529d3b1d to your computer and use it in GitHub Desktop.
Pequeno experimento com osBrain para criar uma calculadora; Espera entradas no formato "1 + 1"
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from osbrain import run_agent | |
from osbrain import run_nameserver | |
def somar(agent, message): | |
# Separar números e operador em uma lista | |
operadores = message.split() | |
# Checar se a operação desejada é uma soma | |
if operadores[1] == "+": | |
resultado = int(operadores[0]) + int(operadores[2]) | |
# Enviar mensagem | |
agent.log_info( | |
"{} + {} = {}".format(operadores[0], operadores[2], resultado)) | |
def subtrair(agent, message): | |
# Separar números e operador em uma lista | |
operadores = message.split() | |
# Checar se a operação desejada é uma soma | |
if operadores[1] == "-": | |
resultado = int(operadores[0]) - int(operadores[2]) | |
# Enviar mensagem | |
agent.log_info( | |
"{} - {} = {}".format(operadores[0], operadores[2], resultado)) | |
def multiplicar(agent, message): | |
# Separar números e operador em uma lista | |
operadores = message.split() | |
# Checar se a operação desejada é uma soma | |
if operadores[1] == "*": | |
resultado = int(operadores[0]) * int(operadores[2]) | |
# Enviar mensagem | |
agent.log_info( | |
"{} * {} = {}".format(operadores[0], operadores[2], resultado)) | |
def dividir(agent, message): | |
# Separar números e operador em uma lista | |
operadores = message.split() | |
# Checar se a operação desejada é uma soma | |
if operadores[1] == "/": | |
resultado = int(operadores[0]) / int(operadores[2]) | |
# Enviar mensagem | |
agent.log_info( | |
"{} / {} = {}".format(operadores[0], operadores[2], resultado)) | |
if __name__ == '__main__': | |
# Inicialização do nameserver e agentes | |
ns = run_nameserver() | |
publisher = run_agent("Publisher") | |
mais = run_agent("Mais") | |
menos = run_agent("Menos") | |
vezes = run_agent("Vezes") | |
divisao = run_agent("Divisao") | |
# Criando um endereço de comunicação publish-subscribe | |
address = publisher.bind("PUB") | |
# Conectando os agentes ao endereço de comunicação e atribuindo os comportamentos | |
mais.connect(address, handler=somar) | |
menos.connect(address, handler=subtrair) | |
vezes.connect(address, handler=multiplicar) | |
divisao.connect(address, handler=dividir) | |
# Input dos parâmetros | |
mensagem = input("Digite a operação:") | |
# Envio da mensagem | |
publisher.send(address, mensagem) | |
ns.shutdown() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment