用Python构建计算器
我刚开始学习Python,第一件事就是做一个计算器。我的大部分代码都是用来处理错误输入的,但我在想有没有办法让计算器可以加、减、乘、除不止两个数字。比如说,让用户选择他们想要操作的数字个数,然后把这些数字都放进计算里。其实我就是想找一些可能的改进方法,甚至更高级的功能,比如让它能求导或积分之类的。有什么想法吗?
def add(num1, num2):
return num1 + num2
def sub(num1, num2):
return num1 - num2
def mult(num1, num2):
return num1 * num2
def div(num1, num2):
return num1 / num2
def main():
operation = raw_input('\n' "What do you want to do? (+, -, *, /): ")
if (operation != '+' and operation != '-' and operation != '*' and operation != '/'):
print("Please enter a valid operation")
else:
while True:
try:
var1 = float(raw_input("Enter num1: "))
var2 = float(raw_input("Enter num2: "))
except ValueError:
print('\n' "Please enter numbers only")
continue
else:
break
print('\n' "The answer is:")
if(operation == '+'):
print(add(var1, var2))
if(operation == '-'):
print(sub(var1, var2))
if(operation == '*'):
print(mult(var1, var2))
if(operation == '/'):
try:
print(div(var1, var2))
except ZeroDivisionError:
print("Infinity!")
while True:
main()
输出:
你想做什么?(+,-,*,/):+
输入数字1:6
输入数字2:4
答案是:
10.0
你想做什么?(+,-,*,/):r
请输入一个有效的操作
你想做什么?(+,-,,/):
输入数字1:1
输入数字2:e
请只输入数字
输入数字1:t
请只输入数字
输入数字1:2.345
输入数字2:4.67
答案是:
10.95115
你想做什么?(+,-,*,/):/
输入数字1:4
输入数字2:0
答案是:
无穷大!
你想做什么?(+,-,*,/):
1 个回答
1
你可以考虑几个方面:
如果你想处理多个数字,可以看看“可变参数”(varargs),它允许你在一个函数里放入任意数量的参数。例如:
def add(*args):
sum = 0
for number in args:
sum += number
return sum
print(add(1, 2, 4, 3)) # prints 10
这里的 * 符号表示把传入的所有参数放到一个列表里。这样,args 就变成了一个列表,而不是单个数字,你可以轻松地遍历这个列表。
你还可以使用 split 函数,把用户输入的一串数字(比如 "1 2 4 3")拆分成一个个数字,然后把这些数字一起传入那个函数。
另外,你也可以让用户输入一个常见的数学表达式(比如 "12 + 5 * 4 - 8"),然后把它转换成后缀表达式并进行解析,就像真正的计算器处理这些问题一样。这会复杂一些,但你会学到很多关于 Python 的知识!以下链接提供了更多关于这个过程的信息:
转换为后缀表达式
计算后缀表达式