终止python文本冒险

Terminating a python text adventure

本问题已经有最佳答案,请猛点这里访问。

所以我写了一些文本冒险,有很多嵌套的if语句。然而,有时我想用其中一个if语句终止程序,以给出"游戏结束"。我尝试过quit()和exit(),但最多还是会输出一条错误消息:

1
2
3
Traceback (most recent call last):
  File"<string>", line 9, in 0
SystemExit: 0

我没有使用任何try/except语句,只是if语句。例如:

1
2
3
4
5
6
7
8
import sys
if True:
    print"Hello guv'na"
    if True:
       print"Good day, Good day"
       sys.exit(0)
if True:
    print"What's all this then?"

产量:

1
2
3
4
5
Hello guv'na
Good day, Good day
Traceback (most recent call last):
  File"/Users/austin/test.py", line 6, in 0
builtins.SystemExit: 0

我只想让程序在"好的一天,好的一天"之后终止,没有任何消息。这有可能吗?


蛮力方法(下面)应该做你想做的(不管怎样,还是要杀死程序)。

1
2
import os
os.system('pkill python')

如果您看到了这个异常,这意味着有东西正在捕获并打印它。

我猜你有一个这样的尝试/例外块:

1
2
3
4
try:
    do_something()
except:
    print_exc()

这里,except:子句没有指定的异常类型,这意味着将捕获所有类型的异常(包括SystemExit)。

bare except:子句用于清除代码,通常在捕获异常后重新引发异常。除非你绝对需要它们,否则要避开它们。

改为使用:

1
2
3
4
try:
    do_something()
except Exception:
    print_exc()

这样,您将只捕获Exception子类,即除SystemExitKeyboardInterruptGeneratorExit之外的所有标准异常。