用Python构建计算器

-1 投票
1 回答
1233 浏览
提问于 2025-04-18 10:51

我刚开始学习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 的知识!以下链接提供了更多关于这个过程的信息:
转换为后缀表达式
计算后缀表达式

撰写回答