Python Forum
a simple calculator - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: General (https://python-forum.io/forum-1.html)
+--- Forum: Code sharing (https://python-forum.io/forum-5.html)
+--- Thread: a simple calculator (/thread-7236.html)

Pages: 1 2


a simple calculator - Solstice - Dec-29-2017

A simple calculator, for simple calculations.
print("simple calculator by Solstice")
print("I-----I")
print("I00000I")
print("I-----I")
print("I1 2 3I")
print("I4 5 6I")
print("I7 8 9I")
print("I-----I")
print("        ")
print("when the program asks for +- x : type restart to make some space")
f=1
while f==1:
    c=input("+/-/x/:?")
    if c=="+":
        x=input("first number ")
        y=input("number to add ")
        z=int(x)+int(y)
        print(z)
        input("results(Enter to continue)")
    if c=="-":
        x=input("first number ")
        y=input("minus which number? ")
        z=int(x)-int(y)
        print(z)
        input("results(Enter to continue)")
    if c=="x":
        x=input("first number ")
        y=input("times what? ")
        z=int(x)*int(y)
        print(z)
        input("results(Enter to continue)")
    if c==":":
        x=input("first number ")
        y=input("divided by which number? ")
        z=int(x)/int(y)
        print(z)
        input("results(Enter to continue)")
    if c=="restart":
        print(" ")
        print(" ")
        print(" ")
        print(" ")
        print(" ")
        print(" ")
        print(" ")
        print(" ")
        print(" ")
        print(" ")
        print(" ")
        print(" ")
        print(" ")
        print(" ")
        print("===========================================================")
        print("I                      New calculation                    I")
        print("===========================================================")



RE: a simple calculator - Larz60+ - Dec-29-2017

you can change all those print statements (empty lines)
to:
print('\n'* 14)


RE: a simple calculator - Solstice - Dec-29-2017

Thank you ^^
print("simple calculator by Solstice")
print("I-----I")
print("I00000I")
print("I-----I")
print("I1 2 3I")
print("I4 5 6I")
print("I7 8 9I")
print("I-----I")
print("        ")
print("when the program asks for +- x : type restart to make some space")
f=1
while f==1:
    c=input("+/-/x/:?")
    if c=="+":
        x=input("first number ")
        y=input("number to add ")
        z=int(x)+int(y)
        print(z)
        input("results(Enter to continue)")
    if c=="-":
        x=input("first number ")
        y=input("minus which number? ")
        z=int(x)-int(y)
        print(z)
        input("results(Enter to continue)")
    if c=="x":
        x=input("first number ")
        y=input("times what? ")
        z=int(x)*int(y)
        print(z)
        input("results(Enter to continue)")
    if c==":":
        x=input("first number ")
        y=input("divided by which number? ")
        z=int(x)/int(y)
        print(z)
        input("results(Enter to continue)")
    if c=="restart":
        print('\n'* 14)
        print("===========================================================")
        print("I                      New calculation                    I")
        print("===========================================================")



RE: a simple calculator - Larz60+ - Dec-29-2017

Here's another way to do this:
class Calculator:
    def __init__(self):
        self.form = {
            'header': ["simple calculator by Solstice", "I-----I", "I00000I", "I-----I", "I1 2 3I", "I4 5 6I",
                       "I7 8 9I", "I-----I", "", "when the program asks for +- x : type restart to make some space"]
        }
        self.calc()

    def print_header(self):
        for line in self.form['header']:
            print(line)

    def add(self):
        x = input("first number ")
        y = input("number to add ")
        return int(x) + int(y)

    def subtract(self):
        x = input("first number ")
        y = input("minus which number? ")
        return int(x) - int(y)

    def multiply(self):
        x = input("first number ")
        y = input("times what? ")
        return int(x) * int(y)

    def divide(self):
        x = input("first number ")
        y = input("divided by which number? ")
        return int(x) / int(y)

    def restart(self):
        print('\n' * 14)
        print("===========================================================")
        print("I                      New calculation                    I")
        print("===========================================================")

    def calc(self):
        self.print_header()
        while True:
            c = input("+/-/x//? ")
            if c == "+":
                print(self.add())
            elif c == "-":
                print(self.subtract())
            elif c == "x":
                print(self.multiply())
            elif c == "//":
                print(self.divide())
            elif c == "restart":
                self.restart()
            input("results(Enter to continue)")

if __name__ == '__main__':
    Calculator()



RE: a simple calculator - Solstice - Dec-29-2017

looks good, have not learned how to code this way, but ill take a
look at it


RE: a simple calculator - Mekire - Dec-30-2017

This is also a great opportunity to learn about switching on dictionaries instead of writing repetitive if/elif/else blocks:
from operator import add, sub, mul, truediv


OPERATIONS = {"+" : add, "-" : sub, "*" : mul, "/" : truediv}
OPERATOR_TEXT = {"+" : "Number to add? ", "-" : "Minus which number? ",
                 "*" : "Times what? ", "/" : "Divided by which number? "}


class Calculator:
    def __init__(self):
        self.form = {"header" : ["simple calculator by Solstice",
            "I-----I", 
            "I00000I",
            "I-----I",
            "I1 2 3I",
            "I4 5 6I",
            "I7 8 9I",
            "I-----I",
            "",
            "when the program asks for +- x : type restart to make some space"]}
        self.calc()
 
    def print_header(self):
        print("\n".join(self.form['header']))

    def perform_op(self, operator):
        x = int(input("First number: "))
        y = int(input(OPERATOR_TEXT[operator]))
        return OPERATIONS[operator](x, y)
 
    def restart(self):
        print('\n' * 14)
        print("===========================================================")
        print("I                      New calculation                    I")
        print("===========================================================")
 
    def calc(self):
        self.print_header()
        while True:
            user_input = input("+,-,*,/? ")
            if user_input == "restart":
                self.restart()
            else:
                result = self.perform_op(user_input)
                print(result)
            input("results(Enter to continue)")


if __name__ == '__main__':
    Calculator()



RE: a simple calculator - Solstice - Dec-30-2017

I partially understand the code, but I could need some more help.

Also, how is it possible to let the programm itself call self defined functions?
example()


RE: a simple calculator - Larz60+ - Dec-30-2017

Quote:Also, how is it possible to let the programm itself call self defined functions?
I'm not sure what you mean by self defined functions.
do you mean from within the class?


RE: a simple calculator - Solstice - Dec-30-2017

I mean

def myfunc()

then you can call this function in the shell,

so if

def myfunc():
print("text")

it will print text in the shell when you type
myfunc()

can this be automated so it can be run in the terminal too?


RE: a simple calculator - Larz60+ - Dec-30-2017

within the class, it's called a method.
It requires the first argument to be self for example:
def myfunc(self):
    print('text')
if external from the class,
def myfunc():
    return "I'm a function"

class myClass:
    def __init__(self):
        print(myfunc())

myClass()
You can run either Merkie's code, or the code that I supplied from the command line,
just save as a .py file (say 'MyClass.py') and run as any other python script:
python MyClass.py