simplecalculator

A simple calculator library.


License
Other
Install
pip install simplecalculator==0.0.4

Documentation

Calculator

A simple calculator library.

This module is now a Python package. You can install it using:

$ sudo pip install simplecalculator

Examples of usage:

  • simplecalculator.py -- a command-line utility

  • tornadoweb.py -- a TornadoWeb applications with a minimalistic RESTful API. Do you math with curl!

How?

Clone this repo and test it:

$ nosetests tests/*.py

All good?

Usage (in your script)

  1. Import calculator

  2. Instantiate SimpleCalculator()

  3. Call run() with the list of values, operands, and functions you want to process.

  4. The history of operations, results, and unprocessed input is stored in SimpleCalculator.log.

Here's a short sample:

from calculator.simple import SimpleCalculator

c = SimpleCalculator()
c.run('1 + 1')
print c.log

If you want to read the state of the LCD (no kidding!), use

print c.lcd

Usage (on the command line)

Run:

$ ./simplecalculator.py -s "1 + 2 / 6 acv 1 + 1 / 33 fmod 0.01"

then

$ ./simplecalculator.py -s "1 + 2 / 6 acv 1 + 1 / 33 ceil fmod"

then

$ ./simplecalculator.py -s "1 + 2 / 6 acv 1 + 1 / 33 fmod 0.01 1 2 3 4"

This calculator is as forgiving as a simple desktop calculator, it will ignore what it does not know, try to compute what it can treating the given string as a list of keystrokes. You may see one or more status entries after the last result, that's intended.

Usage (via curl)

If you want to implement this alculator as a RESTful API, install TornadoWeb and run `tornadoweb.py', then use curl:

$ curl -X POST http://localhost:8888/v1/calculate -d '1 + 2 / 6 acv 1 + 1 / 33 fmod 0.01 1 2 3 4'

You can easily extend this calculator to support any number of one- and two-argument functions, search calculator/simple.py for fmod and ceil to see what modifications you need to make.

Why?

I got asked to provide samples of my work, proof I know Python, etc. This project is way more than what I was asked to deliver, but I had more time to spare. There is more coming.

Who?

Jacek Artymiak