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)
我知道这不起作用但我怎么能解决它还是有更好的想法?谢谢!
使用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......
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |