mangafas - 2 years ago 67
Python Question

# Cant find where my bug is in the program and how to solve it in Python

So I have been trying to create calculator in Python and so far I've been good but now I got a major promblem and I don't know what to do. I know that the code could have been more simple but I will need it as it it for the future.

``````class Calculator:

try:
n = int(input("enter number: "))  # user enters the n value
n_for_add = int(input("What do you want to add on " + str(n) + " ? "))  # user enters the n_for_add value
except ValueError:  # if the value is not an integer it will raise an error
print("you must enter an integer!")  # and print you this. This will automatically kill the program
print(str(n) + " plus " + str(n_for_add) + " equals to " + str(n_from_add))  # this will print a nice output

def subtraction(self):
try:
nu = int(input("enter number: "))
nu_for_sub = int(input("What do you want to take off " + str(nu) + " ? "))
except ValueError:
print("you must enter an integer!")
nu_from_sub = nu - nu_for_sub
print(str(nu) + " minus " + str(nu_for_sub) + " equals to " + str(nu_from_sub))

def division(self):
try:
num = int(input("enter number: "))
num_for_div = int(input("What do you want to divide " + str(num) + " off? "))
except ValueError:
print("you must enter an integer!")
num_from_div = num / num_for_div
print(str(num) + " divided by " + str(num_for_div) + " equals to " + str(num_from_div))

# same as others but with division this time

def Multiplication(self):
try:
numb = int(input("enter number: "))
numb_for_multi = int(input("What do you want to multiply " + str(numb) + " on? "))
except ValueError:
print("you must enter an integer!")
numb_from_multi = numb * numb_for_multi
print(str(numb) + " multiplied by  " + str(numb_for_multi) + " equals to " + str(numb_from_multi))
# its the same as others but with multiplication function

def choice(self):
print("A. Addition\l B. Substraction\l C. Division\l D. Multiplication")
xn  = input("What do you want to do? ")
if xn == "a":
self.x = x
return x
elif xn == "b":
z = self.subtraction()
self.z = z
return z
elif xn == "c":
y = self.division()
self.y = y
return y
elif xn == 'd':
v = self.Multiplication()
self.v = v
return v

objectCalculator = Calculator()
print(objectCalculator.choice())
``````

The problem is in the indent in your `if` statements in `choice`. The function should be re-written like this:

``````def choice(self):
print("A. Addition\l B. Substraction\l C. Division\l D. Multiplication")
xn  = input("What do you want to do? ")
if xn == "a":
self.x = x
return x
elif xn == "b":
z = self.subtraction()
self.z = z
return z
elif xn == "c":
y = self.division()
self.y = y
return y
elif xn == 'd':
v = self.Multiplication()
self.v = v
return v
``````

Python is unlike many other languages in that it does not use braces to enclose control structures. It only looks at how many spaces away from the beginning of the line to determine if a statement is within the structure. This goes for `if`, `elif`, `else`, `for`, `while`, `def`, `class` and more.

You can find out more about that from the docs or from here.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download