用Python构建计算器

时间:2014-06-24 04:48:14

标签: python calculator

所以我是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()

输出:

你想做什么? (+, - ,*,/): +

输入num1: 6

输入num2: 4

答案是:

10.0

你想做什么? (+, - ,*,/): r

请输入有效的操作

你想做什么? (+, - ,,/):

输入num1: 1

输入num2: e

请仅输入数字

输入num1: t

请仅输入数字

输入num1: 2.345

输入num2: 4.67

答案是:

10.95115

你想做什么? (+, - ,*,/): /

输入num1: 4

输入num2: 0

答案是:

无限!

你想做什么? (+, - ,*,/):

1 个答案:

答案 0 :(得分:1)

你可以看一些事情:

对于多个数字,您可以查看varargs,它允许您将任意数量的参数放入函数中。例如:

def add(*args):
    sum = 0
    for number in args:
        sum += number
    return sum

print(add(1, 2, 4, 3)) # prints 10

*表示获取args之后传入的所有内容,并将它们放入列表中。这使args成为一个列表,而不是一个数字,你可以迭代它。 你可以使用split函数来分解用户输入的数字列表(“1 2 4 3”.split()),然后将它们全部发送到该函数中。

你还可以看一下用户输入一个典型的数学表达式(“12 + 5 * 4 - 8”),然后将其转换为后缀表示法并解析它,就像实际计算器处理这类事物一样。这有点复杂,但你会学到很多关于Python的知识!这些链接提供了有关该过程的更多信息:
Convert to postfix
Evaluate postfix expression