【问题标题】:exiting a python script to terminal after the script has been restsrted在脚本被休息后退出 python 脚本到终端
【发布时间】:2014-05-30 18:39:25
【问题描述】:

这周我一直在学习 python,从一个蛇游戏教程开始。然后我在游戏中添加了一些功能,让它变得很棒。我添加的一项功能是能够在蛇死后重新启动游戏。死亡后,会出现一个屏幕,提示用户按 y 或 n 重新开始游戏。按 y 总是会重新开始游戏,这让我很满意。按 n 将脚本退出到终端,但前提是游戏只玩了一次。如果游戏玩了两次,则选择了 n,屏幕变黑,一切都没有响应。蛇死后,会调用一个函数。还有一些其他的点点滴滴,但我相信这就是问题所在:

while True:
    for evt in pygame.event.get():
        if evt.key == ord('y')
            restart = "y"
            break
        elif evt.key == ord('n'):
            restart = "noty"
            break
if restart == 'y'
    os.execl(sys.executable, sys.executable, × sys.argv)
else:
    pygame.quit()
    sys.exit()
    os.exit()

提前致谢

【问题讨论】:

  • 我怀疑最后两行。你不是只想退出pygame吗?
  • os.execl。自动更正!
  • @mauve,说实话,我不太确定。我的想法是退出一切并重新开始

标签: python reboot


【解决方案1】:

你可以直接退出循环。

while True:
    for evt in pygame.event.get():
        if evt.key == ord('y')
            restart = "y"
            break
        elif evt.key == ord('n'):
            pygame.quit() # just quit here 
            sys.exit()
if restart == 'y':
    os.execl(sys.executable, sys.executable,sys.argv)

也没有os.exit(),它是os._exit(),我认为不会在sys.exit()之后执行

来自docs

注意标准的退出方式是sys.exit(n). _exit(),通常只能在fork()之后的子进程中使用。

【讨论】:

  • 感谢您的回复。目前我只是想让它工作,然后我会稍后清理它。因此,如果我在 SYS.exit 之前添加下划线并包含它,它应该可以工作吗?
  • @user3692412。我不明白为什么只使用 sys.exit 本身不起作用。你的 os.exit 从来没有做任何事情。
  • 应该 sys.exit 必须退出到终端吗?我的想法是在 sys.exit 之后肯定还有其他东西在运行。
  • @user3692412。在您的原始代码中,您说它在某些情况下有效, os.exit() 绝对没有做任何事情的事实应该是一个指针。
猜你喜欢
  • 2019-12-30
  • 2016-03-27
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
  • 1970-01-01
  • 2016-07-30
  • 2012-10-28
  • 2013-12-06
相关资源
最近更新 更多