2017-10-19 119 views
0

我是新來的Python,我試圖使用exit功能從sys,但不知何故,它不工作在我的電腦上。這是我的代碼:退出功能不起作用

from sys import exit 

userResponse = input ("n or y?") 
if not (userResponse =="n" or userResponse =="y") : 
exit ("ERROR") 
+0

是(「發生異常,使用%tb查看完整的回溯。 SystemExit:錯誤」) – jooj

+0

代碼甚至不是有效的,請修復它。 – norok2

+0

哪個python版本以及如何運行代碼? –

回答

1

你必須正確地縮進:

if not (userResponse =="n" or userResponse =="y") : 
    exit('Error') 

你也可以拋出一個得到一個更描述性錯誤消息:

userResponse = input ("n or y?") 
if not (userResponse =="n" or userResponse =="y") : 
    raise ValueError('Does not work') 
+0

,但我需要寫一個錯誤按摩! – jooj

+0

擴展我的答案。 – mrCarnivore

+0

我試圖在我的python終端中寫入exit(「ERROR」),它工作正常。它什麼時候需要是一個整數? (我也認爲把它留空將工作) –

0

上跟進@MrCarnivore ...

from sys import exit 

userResponse = raw_input("n or y?") 
if not (userResponse =="n" or userResponse =="y"): 
    print('Error Message Here') 
    exit(1) 
+0

我得到這個錯誤按摩:(錯誤 發生異常,使用%TB看到完整回溯 SystemExit:1 /Users/juhina/anaconda/lib/python3.6/site-packages/IPython/ core/interactiveshell.py:2889:UserWarning:退出:使用'exit','quit'或Ctrl-D warn(「退出:使用'退出','退出'或Ctrl-D。 stacklevel = 1) – jooj

+0

什麼時候退出需要一個整數?在我的交互式控制檯,2.7,它可以正常工作,退出('MESSAGE')「 –

+0

@cer:」「」exit(...) exit([status] ) 通過提高SystemExit(狀態)退出解釋器 如果省略狀態或None,它將默認爲零(即成功) 如果狀態是一個整數,它將被用作系統退出狀態。 如果是另一種對象,它將被打印並且系統退出狀態將是一個(即失敗)。「」「 - IOW傳遞一條消息是完全合法的。同樣,如果你想打印錯誤,打印它們'sys.stderr','sys.stdout'用於正常的程序輸出 –

1

Exi t引發了一個例外情況SystemExit;這就是它如何終止程序。終止後你的環境顯示異常並不是一個錯誤,它只是向你顯示原因。我同意你(一樣,例如,this PEP),默認的行爲應該是打印出此異常的追溯信息,併爲KeyboardException

但最終,執行停止,因爲它被設計來做。

請參閱該文檔的詳細信息: https://docs.python.org/2/library/sys.html#sys.exit


一些答案在這裏首先指出,你不能傳遞了一個字符串exit。那是假:從所述文檔(重點煤礦)

可選參數arg可以是一個整數,給出退出狀態(默認爲零),或另一種類型的對象。如果它是一個整數,零被認爲是「成功的終止」和任何非零值由殼和類似物被認爲是「異常終止」。大多數系統要求它在範圍0-127,和另外產生不確定的結果....如果對象的另一種類型的通過,沒有相當於傳遞零,以及任何其他對象被打印到stderr和結果在出口1. 特別是,sys.exit(「一些錯誤消息」)的代碼是一個快速的方法時發生錯誤時退出程序。


的內置exit功能做同樣的事情。在一般情況下,它是不是很大從一個模塊中導入,儘管在這種情況下,它並不重要影子內建函數。推薦款式會

import sys 
sys.exit("My exception") 

如果這看起來不直觀給你,你可以通過使用os._exit繞過異常處理。不要這樣做沒有理由