Python 编码计算器

Python coding calculator

我创建这段代码是为了构建一个计算器,它会根据用户输入自动调用正确的算术函数。
我写了一个示例函数。我在底部写了补充作为评论。

当我运行代码时,在for循环中它应该将用户的输入匹配到列表中进行添加,以确认要使用的算术函数,在这种情况下,它不起作用。
此外,无论您输入什么,都会打印“无效算术函数”。
我是 python 的新手,仍在学习中。任何指导表示赞赏。

from Calculator import addition

divisions = ["division", "divide", "/"]
multiplications = ["multiplication", "multiply", "*", "x", "X"]
additions = ["addition", "add", "+"]
subtractions = ["subtraction", "subtract", "-"]

answers = 0

problem = input("Which arithmetic function do you want to perform? ")
num1 = int(input("What is your first number? "))
num2 = int(input("What is your second number? "))

if type(problem) == str:
    for i in additions:
        if problem == i:
            answers = addition(num1, num2)
            print(answers)
        else:
            print("Invalid arithmetic function")
            break
else:
    print("Invalid arithmetic functions")

print(answers)

#def addition(num, num0):
#    answer = num + num0
#    return answer

你的代码有问题

for i in additions:
   if problem == i:

这里第一个 "addition" 不是 "+" 所以循环在第一次中断。

解决方案

而不是循环使用直接if条件

if problem in additions:

检查此代码

divisions = ["division", "divide", "/"]
multiplications = ["multiplication", "multiply", "*", "x", "X"]
additions = ["addition", "add", "+"]
subtractions = ["subtraction", "subtract", "-"]

answers = 0

problem = input("Which arithmetic function do you want to perform? ")
num1 = int(input("What is your first number? "))
num2 = int(input("What is your second number? "))

def addition(num, num0):
   answer = num + num0
   return answer

if type(problem) == str:
  if problem in additions:
      answers = addition(num1, num2)
      print(answers)
  else:
      print("Invalid arithmetic function")
else:
    print("Invalid arithmetic functions")

您可以大大简化您的代码,如下所示:

divisions = ["division", "divide", "/"]
multiplications = ["multiplication", "multiply", "*", "x", "X"]
additions = ["addition", "add", "+"]
subtractions = ["subtraction", "subtract", "-"]

problem = input("Which arithmetic function do you want to perform? ")
if problem in additions:
    num1 = int(input("What is your first number? "))
    num2 = int(input("What is your second number? "))
    print('Answer is:', num1 + num2)
else:
    print("Invalid arithmetic function")

在调试您的程序时,我发现问题如下:

for i in additions:
            if problem == i:
                answers = addition(num1, num2)
                print(answers)
            else:
                print("Invalid arithmetic function")
                break

for 循环将搜索添加列表并输出每个项目的结果。要停止这种情况,请删除打印功能并仅在计算完成后打印。

有多种方法可以重新实现“无效算术函数”错误消息。最简单的方法之一是将代码块放入函数中,然后 return 值。

这是工作版本:

    divisions = ["division", "divide", "/"]
    multiplications = ["multiplication", "multiply", "*", "x", "X"]
    additions = ["addition", "add", "+"]
    subtractions = ["subtraction", "subtract", "-"]

    answers = 0

    problem = input("Which arithmetic function do you want to perform? ")
    num1 = int(input("What is your first number? "))
    num2 = int(input("What is your second number? "))

    def addition(num, num0):
        answer = num + num0
        return answer

    def calculateAnswer():
        if type(problem) == str:
        for i in additions:
          if problem == i:
            answers = addition(num1, num2)
            return answers
      #If an answer is not returned, the code below will execute
      return "Invalid arithmetic function"

    print(calculateAnswer());

问题是您在 for 循环中添加了 else。等待循环结束,因为列表中的最后一项可能与问题字符串匹配。

divisions = ["division", "divide", "/"]
multiplications = ["multiplication", "multiply", "*", "x", "X"]
additions = ["addition", "add", "+"]
subtractions = ["subtraction", "subtract", "-"]

answers = None

problem = input("Which arithmetic function do you want to perform? ")
num1 = int(input("What is your first number? "))
num2 = int(input("What is your second number? "))
if type(problem) == str:
    for i in additions:
        if problem == i:
            answers = num1+ num2
            print(answers)
    if(answers == None):
            print("Invalid arithmetic functions")
        
else:
    print("Invalid arithmetic functions")