【问题标题】:Calculator: division by zero error, how do I fix that?计算器:除以零误差,我该如何解决?
【发布时间】:2022-01-22 17:14:53
【问题描述】:

除以零错误,我该如何解决?(零/零 = 错误)。如何将其实现到计算器功能中。

import logging
def calculate(choice):
    if choice == "1":
        logging.info("Add")
        num1 = input("Enter the first number")
        num2 = input("Enter the second number") 
        return int(num1) + int(num2)
    if choice == "2":
        logging.info("Subtract")
        num1 = input("Enter the first number")
        num2 = input("Enter the second number")
        return int(num1) - int(num2)
    if choice == "3":
        logging.info("Multiply")
        num1 = input("Enter the first number")
        num2 = input("Enter the second number")
        return int(num1) * int(num2)
    if choice == "4":
        logging.info("Divide")
        num1 = input("Enter the first number")
        num2 = input("Enter the second number")
        return int(num1) / int(num2)       `#division by zero error, how do I fix that?`
choice = input("Choose 1 - Add 2 - Subtract 3 - Multiply 4 - Divide")
result = calculate(choice)
print(result)

在数学中你不能将 0 除以 0,所以在我的计算器中我想做同样的事情,向用户显示这是不可能的消息。

【问题讨论】:

  • 您认为0/0 应该是什么?
  • 当您尝试除以零时,您希望它做什么?
  • 你想要什么输出,为什么?例外是完全合理的回应。
  • 在数学中你不能将 0 除以 0,所以在计算器中我想做同样的事情,显示不可能的消息。

标签: python python-3.x


【解决方案1】:

如果是0,这是允许用户输入第二个数字或键入exit 退出的选项之一:

if choice == "4":
    logging.info("Divide")
    num1 = input("Enter the first number")
    num2 = input("Enter the second number")
    if num2 == "0":
        # If second number is 0, loop until user enter non-zero number of exit
        print ("Second number cannot be zero")
        while (True):
            num2 = input("Enter non-zero number or type 'exit' to exit")
            if (num2 != "0" or num2 == "exit"):
                break
                
    return int(num1) / int(num2) if num2 != "exit" else None

【讨论】:

    【解决方案2】:

    如果您只是希望它返回“错误”,那么您可以将此代码用于第 4 部分:

    if choice == "4":
            logging.info("Divide")
            num1 = input("Enter the first number")
            num2 = input("Enter the second number")
            return int(num1) / int(num2) if num2 != 0 else "Error, division by 0 is impossible."
    

    我猜这就是你的意思,我基本上已经放入了一个 if 语句,以便如果除数为 0 时返回“错误”。

    或者,您可以使用 try except 解决方案。

    【讨论】:

      【解决方案3】:

      您在 cmets 中表明您希望在用户尝试除以零时显示一条消息。

      Python 已经打印了一条消息 - 异常和回溯:

      >>> 0 / 0
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      ZeroDivisionError: division by zero
      

      但您也可以“捕捉”此异常并提供您自己的、对用户更友好的消息。请注意,Python 会很有帮助地告诉您它抛出的异常类型,ZeroDivisionError。这就是您要捕获的异常类型。例如

      try:
           0 / 0
      except ZeroDivisionError:
           print("Cannot divide by zero")
         
      

      产生输出:

      Cannot divide by zero
      

      您可以在 Python docs 中阅读有关 try ... except 语句的更多详细信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-31
        • 2018-08-07
        • 1970-01-01
        • 2015-03-16
        • 1970-01-01
        相关资源
        最近更新 更多