Posts: 17
Threads: 3
Joined: Dec 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("===========================================================")
Posts: 12,024
Threads: 484
Joined: Sep 2016
you can change all those print statements (empty lines)
to:
print('\n'* 14)
Posts: 17
Threads: 3
Joined: Dec 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("===========================================================")
Posts: 12,024
Threads: 484
Joined: Sep 2016
Dec-29-2017, 11:41 PM
(This post was last modified: Dec-29-2017, 11:41 PM by Larz60+.)
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()
Posts: 17
Threads: 3
Joined: Dec 2017
looks good, have not learned how to code this way, but ill take a
look at it
Posts: 591
Threads: 26
Joined: Sep 2016
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()
Posts: 17
Threads: 3
Joined: Dec 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()
Posts: 12,024
Threads: 484
Joined: Sep 2016
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?
Posts: 17
Threads: 3
Joined: Dec 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?
Posts: 12,024
Threads: 484
Joined: Sep 2016
Dec-30-2017, 07:56 PM
(This post was last modified: Dec-30-2017, 07:56 PM by Larz60+.)
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
|