Python Forum
a simple calculator
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
a simple calculator
#1
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("===========================================================")
Reply
#2
you can change all those print statements (empty lines)
to:
print('\n'* 14)
Reply
#3
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("===========================================================")
Reply
#4
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()
Reply
#5
looks good, have not learned how to code this way, but ill take a
look at it
Reply
#6
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()
Reply
#7
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()
Reply
#8
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?
Reply
#9
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?
Reply
#10
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
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  [split] simple calculator FelixLarry 11 4,199 Aug-20-2022, 11:34 AM
Last Post: FelixLarry

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020