【问题标题】:Python Calculator Program Crashes When Invalid Equation Entered输入无效公式时 Python 计算器程序崩溃
【发布时间】:2014-04-01 00:35:24
【问题描述】:

我对我制作的 python 计算器有这个问题。我是python的新手,所以请不要对我太挑剔。我这样做是为了在输入如下等式时不会崩溃:8*d、8/0、dajf。但是,当用户输入如下内容时:/7、*e 或 *6。它崩溃了。当输入这样的无效方程式时,如何防止它崩溃?比方说,它只会以“警告:无效方程式”响应

我当前的代码:

valid_chars = "0123456789-+/* \n";
while True:
    x = "x="
    y = input(" >> ")
     x += y
     if any(c not in valid_chars for c in y):
         print("WARNING: Invalid Equation")
         continue
     try:
         exec(x)
     except ZeroDivisionError:
         print ("WARNING: Invalid Equation")
     else:
    print(x)

提前致谢!

【问题讨论】:

    标签: python input calculator


    【解决方案1】:

    当你输入无效输入时,实际引发的异常是SyntaxError

     >> -8*
    Traceback (most recent call last):
      File "Test.py", line 19, in <module>
        exec(x)
      File "<string>", line 1
        x=-8*
            ^
    SyntaxError: invalid syntax
    

    所以,你也可以像这样简单地捕获SyntaxError

     try:
         exec(x)
     except (ZeroDivisionError, SyntaxError):
         print ("WARNING: Invalid Equation")
     else:
         print(x)
    

    【讨论】:

    • 哦,通过使用你答案的第二部分,我基本上可以修复我所有的错误,对吧?谢谢。
    【解决方案2】:

    我最近用 Python 做了一个计算器。当我开始写涉及除法的部分时,我只是写了:

       if n2 == 0: //dividing by zero isn't possible
        divbyzeroerror = 1
      else:
        answer = n1 / n2
      if choice == ("a"):
    answer = n1 + n2
    if choice == ("s"):
    answer = n1 - n2
    
        if(divbyzeroerror == 1): //if n2 is inputted as zero, the divbyzeroerror   variable becomes 1.  
        print("error, cannot divide by zero") //if n2 is a zero and therefore divbyzeroerror = 1, then you can get the program to print an error.
    else:
    print (answer)
    

    【讨论】:

      猜你喜欢
      • 2016-02-08
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-24
      相关资源
      最近更新 更多