2017-12-27 951 views
-2

我已經排除了os.exit,sys.exit(),raise SystemExit(0),quitexit()一旦某件事情完成,我該如何完全停止代碼?

我想完全停止,一旦我的多個條件都滿足了。

while x: 
    #do something 
    #for loop 
    #if a: 
     #do something 
     print "Game over" 
     os.exit 
    #elif b: 
     #do something 
     print "Game over" 
     os.exit 
    break 

while y: 
    #(...same form as the previous one^) 

#get user input for the next turn 

#while 1 
#... 
#while n 

當我玩遊戲,而遊戲在消息被打印到屏幕上,它仍然是用戶輸入儘管被告知停止問。

+0

歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。在發佈您的MCVE代碼並準確描述問題之前,我們無法爲您提供有效的幫助。 我們應該能夠將發佈的代碼粘貼到文本文件中,並重現您描述的問題。 – Prune

+1

如果使用'else if','while'循環將在'elif'內,這種情況下會自動中斷。 – Onyambu

+0

爲什麼不能使用'sys.exit()'? –

回答

1

這是怎麼sys.exit()應該工作。如果您導入並達到它,Sys.exit()應該可以工作。也許更多的故障排除信息會有幫助?這適用於Python和python3

#!/usr/bin/env python 

import sys 

while 1==1: 
    print("This will print") 

    if 2==2: 
     print("This will also print") 
     sys.exit() 

    print("This will not print") 
print("This will not print") 

這是我的終端輸出:

Matts-MacBook-Pro:Desktop mw$ ./stupid.py 
This will print 
This will also print 

編輯。

正如@goosfraba所說,sys.exit(0)可能是最佳實踐。提供的The link表示沒有參數可以有未定義的行爲。像1或「這是一個錯誤信息」的另一個參數也會起作用。

+0

解決!謝謝。順便說一下,不錯的文件名。 – user7091717

0

有了這些小改動,我設法使這項工作:

import os 

while True: 
    #do something 
    #for loop 
    if False: 
     #do something 
     print "Game over A" 
     os._exit(0) 
    elif True: 
     #do something 
     print "Game over B" 
     os._exit(0) 
    break 

print "Not over" 

輸出:

Game over B 

注缺乏不高於輸出。 或許你需要_exit(<status>)

+0

雖然技術上有效,但常規的「sys.exit」也應該如此。有'os._exit'的合法用途,但在這裏使用它似乎是一個壞主意。 – user2357112

+0

很抱歉,我知道有人投下我的迴應,因爲它與你的相似。問題是我仍然在輸入我的解決方案,但你已經發布了你的解決方案。但是,如果你看看上面的評論,我確實提到了「if else」語句的使用 – Onyambu

+0

如果您有與您的答案有關的評論,請將其發佈到那裏,而不是在這裏。我不是那個倒票的人。 – Prune