如何用python 3制作一个简单的计算器?
我正在使用python 3制作这个计算器,到目前为止我已经有了:如何用python 3制作一个简单的计算器?,python,function,calculator,python-3.6,Python,Function,Calculator,Python 3.6,我正在使用python 3制作这个计算器,到目前为止我已经有了: 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 mul
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)
print(“欢迎使用计算器!”)
类计算器:
def添加(自身、x、y):
添加=x+y
返回添加
def减法(自、x、y):
减去=x-y
减去返回值
def乘法(自、x、y):
乘以=x*y
回报倍增
def分区(自身、x、y):
除以=x/y
收益分配
计算器=计算器()
打印(“1\t添加”)
打印(“2\t提取”)
打印(“3\t倍增”)
打印(“4\tVision”)
operations=int(输入(“您希望使用什么操作:”)
x=int(输入(“您希望使用多少个数字?”:”)
如果操作==1:
a=0
总和=0
而a
加法和乘法很好,减法和除法是这里的问题。减法的一个例子是,如果我尝试使用两个数字,9和3,我会得到-6。。。这绝对是错误的。至于除法,如果我试着把两个数字,10和2除法,我会得到0.2,这也是错误的。对于部门,我试着切换数字和现状,同样的问题(10/2),我会得到0.05。。。另外,我不想使用python的任何内置函数,所以请帮助我以最简单的方式修复这些错误。您的算法在减法和除法方面是错误的。让我们看看减法:
s = 0
diff = 0
while s < x:
number = int(input("Please enter number here: "))
s += 1
diff = calculator.subtraction(number,diff)
你当然可以进一步浓缩这一点
terms = [int(input("Please enter number here: ")) for _ in range(x)]
terms[1:] = [x * (-1) for x in terms[1:]]
return sum(terms)
类似地,在划分时,在你的头脑中逐步进行:
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)
我们可以编写类似的算法
terms = [int(input("Please enter number here: ")) for _ in range(x)]
head, tail = terms[0], terms[1:]
result = head
for term in tail:
result /= term
请注意,所有这些都可以使用
functools.reduce
和操作符之一编写
terms = [int(input("Number please! ")) for _ in range(int(input("How many numbers? ")))]
sum_ = functools.reduce(operator.add, terms)
diff = functools.reduce(operator.sub, terms)
prod = functools.reduce(operator.mul, terms)
diff = functools.reduce(operator.truediv, terms)
考虑减法选项(使用问题中提供的测试输入):
我们说我们给出2个数字。
第一个数字是9。所以diff=number-diff=9-0=0
。
现在我们输入下一个数字,3,因此diff=number-diff=0-3=-3
,现在如果它工作正常,我们需要切换diff的计算,因此它应该是diff=diff-number
,现在如果我们运行它,它将给出-12
,这是技术上正确的答案,当我们问-9-3=-12
,现在我假设你真的想找到9-3=6
,唯一“简单”的解决办法是将diff设置为第一个数字,在本例中为9,然后按照我上面说的做(给出预期的9-3=6)。除法函数不起作用的原因与减法相同,您可以使用与上面类似的逻辑来修复它
除此之外,使用加法、减法、乘法和除法会破坏方法的要点,即防止多次使用相同的代码,并且必须编写更少的代码,但在这种情况下,运行计算器。加法(a,b)
比简单地使用a+b
python还有一个内置的计算器函数,名为eval
,它将获取一个字符串并将其作为python代码运行,这意味着它支持bidma、多个运算符、数学函数(假设您已导入它们)等。请不要创建不同的帐户。我看到了昨天问的这个问题。@cricket_007,太棒了,让我们结束吧!这些似乎是独立的问题,都不值得结束。@Theresa试图限制到一个特定的问题。由于所有函数都大致相同,因此一个操作的解决方案可以修复所有函数。您是否尝试过使用python调试器单步执行代码?文档与(‘pdb’模块)一起提供[
terms = [int(input("Please enter number here: ")) for _ in range(x)]
head, tail = terms[0], terms[1:]
result = head
for term in tail:
result /= term
terms = [int(input("Number please! ")) for _ in range(int(input("How many numbers? ")))]
sum_ = functools.reduce(operator.add, terms)
diff = functools.reduce(operator.sub, terms)
prod = functools.reduce(operator.mul, terms)
diff = functools.reduce(operator.truediv, terms)