Как я могу получить вычитание и деление в моем калькуляторе, используя Python 3, чтобы работать с помощью оператора if?
Поэтому я ранее задавал вопрос о том, почему не работают вычитание и деление в калькуляторе, который я сделал в python 3.6.1. Многие из вас любезно ответили, но я не получил ответ, который хотел. Я прошу прощения, потому что я должен был быть более конкретным, но есть ли способ добавить некоторые операторы if в циклы while? Это мой код:
print("Welcome to Calculator!")
class Calculator:
def addition(self,x,y):
added = x + y
return added
def subtraction(self,x,y):
subtracted = x - y
return subtracted
def multiplication(self,x,y):
multiplied = x * y
return multiplied
def division(self,x,y):
divided = x / y
return divided
calculator = Calculator()
print("1 \tAddition")
print("2 \tSubtraction")
print("3 \tMultiplication")
print("4 \tDivision")
operations = int(input("What operation would you like to use?: "))
x = int(input("How many numbers would you like to use?: "))
if operations == 1:
a = 0
sum = 0
while a < x:
number = int(input("Please enter number here: "))
a += 1
sum = calculator.addition(number,sum)
print("The answer is", sum)
if operations == 2:
s = 0
diff = 0
while s < x:
number = int(input("Please enter number here: "))
s += 1
diff = calculator.subtraction(number, diff)
print("The answer is", diff)
if operations == 3:
m = 0
prod = 1
while m < x:
number = int(input("Please enter number here: "))
m += 1
prod = calculator.multiplication(number, prod)
print("The answer is", prod)
if operations == 4:
d = 0
quo = 1
while d < x:
number = int(input("Please enter number here: "))
d += 1
quo = calculator.division(number,quo)
print("The answer is", quo)
По сути, вычитание и деление вроде работают противоположным образом, и если бы я попытался ввести 2 числа, 9 и 3 для вычитания, я бы получил -6, а для деления я бы получил 0,33333333(1/3). Извините, если это глупый вопрос, потому что я начинающий, когда дело доходит до кодирования.
2 ответа
Для сложения & порядок умножения не имеет значения, т.е. 9+6=6+9 и 3*2=2*3. Но не в случае с вычитанием и делением, т.е. 9-6 не равно 6-9.
В вашем случае для вычитания для числа, введенного 9 и 6:
Для 1-го входа: 9, число = 9 & diff = 0, поэтому diff = число - diff = 9 - 0 = 9
Для 2-го входа: 6, число = 6 & diff = 9, поэтому diff = число - diff = 6 - 9 = -3
Что не является нашим намерением
Небольшое изменение в вашем коде
# For Subtraction
if operations == 2:
s = 0
diff = 0
while s < x:
number = int(input("Please enter number here: "))
s += 1
if (s==1):
diff=number
else:
diff = calculator.subtraction(diff, number)
print("The answer is", diff)
#For Division
if operations == 4:
d = 0
quo = 1
while d < x:
number = int(input("Please enter number here: "))
d += 1
if (d==1):
quo=number
else:
quo = calculator.division(quo,number)
print("The answer is", quo)
После того, как посмотрю твой код, я делаю это для тебя, это то же самое, и я использую твой класс calc. Ты легко забыл набрать Float
class Calculator:
def addition(self,x,y):
added = x + y
return added
def subtraction(self,x,y):
subtracted = x - y
return subtracted
def multiplication(self,x,y):
multiplied = x * y
return multiplied
def division(self,x,y):
divided = x / y
return divided
calculator = Calculator()
num1 = raw_input('First Number >')
num2 = raw_input('Second Number >')
print("1 \tAddition")
print("2 \tSubtraction")
print("3 \tMultiplication")
print("4 \tDivision")
operations = raw_input('Select operation number>')
if int(operations)== 1:
print (calculator.addition(float(num1),float(num2)))
if int(operations)== 2:
print (calculator.subtraction(float(num1),float(num2)))
if int(operations)== 3:
print (calculator.multiplication(float(num1),float(num2)))
if int(operations)== 4:
print (calculator.division(float(num1),float(num2)))