2017-07-13 141 views
0

SO我的項目在Python中,我接受兩個輸入說一個& b作爲整數值。現在的代碼如下:正確地終止腳本沒有錯誤消息在Spyder

import sys 
a = input("enter a") 
b = input("enter b") 
if a < b: 
    print(" enter a greater than b and try again") 
    sys.exit() 

# Rest of the code is here 

現在,這工作正常。但是,創建一個額外的聲明

An exception has occurred, use %tb to see the full traceback. 

SystemExit 

而且我不希望因爲用戶可能會認爲該代碼的功能是不妥當的。那麼有什麼方法可以不顯示這個語句,或者任何其他函數在沒有打印任何內容的情況下退出代碼,除了我寫的這行代碼?

注意我已經嘗試過exit(),但它繼續執行它下面的代碼。此外,我已經注意到this related question但在這裏列出的方法不起作用。

編輯:我添加了一些更多的信息。我需要將此退出函數放入用戶定義的函數中,以便每次用戶輸入一些錯誤的數據時,代碼將調用此用戶定義的函數並退出代碼。 如果我試圖把我的代碼在if else語句像

def end(): 
    print("incorrect input try again") 
    os.exit() 

a = input("enter data") 
if a < 10: 
    end() 
b = input ("enter data") 
if b < 20: 
    end() 
# more code here 

我不知道爲什麼,但我甚至無法最終確定該用戶自定義功能,因爲它提出了未定義函數的錯誤結束()。我在Windows上使用Python Spyder

+0

對不起,我以爲我已經解決了這個問題,但不幸的是我沒有。所以請幫助! –

+0

@moooeeeep目前我使用Spyder在Windows上進行編碼,而我的代碼中沒有任何這樣的東西。 –

+0

然後這似乎是相關的:https://stackoverflow.com/q/25928377/1025391(雖然可能有點過時,因爲行爲有輕微的不同顯着)你最好在你的問題中直接陳述這些信息。 – moooeeeep

回答

0

您可以使用os._exit()

a = int(input("enter a")) 
b = int(input("enter b")) 
if a < b: 
    print(" enter a greater than b and try again") 
    os._exit(0) 
+0

os中沒有屬性exit()。 –

+0

@AmbikaSaxena檢查編輯 –

+1

感謝它工作正常,甚至沒有任何警告! :) –

1

這似乎就好了工作:

import sys 

def end(): 
    print("incorrect input try again") 
    sys.exit(1) 

a = input("enter data") 
if int(a) < 10: 
    end() 
b = input ("enter data") 
if int(b) < 20: 
    end() 

我用sys.exit和固定的條件,以避免與整數比較字符串。我在輸出中看不到任何其他消息。只有這個:

>py -3 test2.py 
enter data1 
incorrect input try again 
> 

請也藉此qoute的通知,從python文檔:

的標準方式退出是sys.exit(N)。在fork()之後,子進程中通常只使用[os] _exit()應該使用 。

它也可以在repl

+0

如果代碼是第一次運行,它會顯示'C:\ Users \ abc \ Anaconda \ lib \ site-packages \ IPython \ core \ interactiveshell.py:2889:UserWarning:退出:使用'exit' ,'退出'或Ctrl-D。 warn(「退出:使用'exit','quit'或Ctrl-D。」,stacklevel = 1) 發生異常,請使用%tb查看完整的回溯。 SystemExit',如果在同一個控制檯上,如果我再次執行代碼,它不會顯示警告,但會顯示:'發生異常,請使用%tb查看完整的回溯。 SystemExit'。我不想顯示這些消息。 –

+0

代碼正常退出,但提供額外的語句,我不需要打印。 –