如何阻止用户仅输入"()"并在此之后仅输出"()"

Dar*_*han 2 python input output

我在python上相当新,所以我对它不太了解:/.但是,这是我的代码:

valid_chars = "0123456789-+/*ans() \n";
while True:
    x = "x="
    y = input(" >> ")
    x += y
    def ans():
        return z
    def ans():
        try:
            return z
        except NameError:
            return 0 # appropriate value
    if any(c not in valid_chars for c in y):
        print("WARNING: Invalid Equation")
        continue
    try:
        exec(x)
    except (SyntaxError, ZeroDivisionError, NameError, TypeError, ValueError):
        print ("WARNING: Invalid Equation")
    else:
        z = x
        print(x)
Run Code Online (Sandbox Code Playgroud)

这有效,但并不完美.如果用户键入"()",则输出"()".如何阻止它输出"()"并说"警告:无效的公式"?提前致谢!

更新:

如果我使用"if not"功能,它会起作用吗?例:

if not(y == "()"):
    continue
except:
    print ("WARNING: Invalid Equation")
Run Code Online (Sandbox Code Playgroud)

我知道这不起作用但我怎么能解决它还是有更好的想法?谢谢!

A.J*_*pal 5

使用raise方法如下:

if y == '()':
     raise SyntaxError
Run Code Online (Sandbox Code Playgroud)

这是您编辑的代码:

valid_chars = "0123456789-+/*ans() \n";
while True:
    x = "x="
    y = input(" >> ")
    x += y
    def ans():
        try:
            return z
        except NameError:
            return 0 # appropriate value
    if y == '()':
        print ("WARNING: Invalid Equation")
        break
    if any(c not in valid_chars for c in y):
        print("WARNING: Invalid Equation")
        try:
            exec(x)
        except (SyntaxError, ZeroDivisionError, NameError, TypeError, ValueError):
            print ("WARNING: Invalid Equation")
            break
        else:
            z = x
            print(x)
Run Code Online (Sandbox Code Playgroud)

塔达!谢谢raise......