2017-09-23 39 views
-4
a = int(raw_input("A?")) 
b = int(raw_input("B?")) 
c = int(raw_input("C?")) 

minusb = -b 
bsquared = b**2 
fourac = 4*a*c 
twoa = 2*a 
discriminant = bsquared + fourac 

if discriminantt<0: 
    print "This quadratic have no real root." 
elif determinant>=0: 
    answer1 = (minusb+((bsquared-fourac)**0.5))/twoa 
    answer2 = (minusb-((bsquared-fourac)**0.5))/twoa 
    print "X = %s and %s" % (answer1, answer2) 

但是,當行列式小於0時,不是打印而是簡單地運行一條錯誤消息,說answer1和answer2不能完成。如果判別式< 0,你如何使程序停止運行?如何使程序打印而不是提供錯誤信息?

PS:這是我只是試圖練習我在網上學到的東西。很抱歉,如果我的代碼是可怕的XD

+0

你的意思是判斷而不是行列式?因爲這將是bsquared - fourac,這就是你想要檢查的值是否大於0. – Evert

+0

你當前檢查的值是> = 0不是你取平方根的值,因此即使在檢查,你的程序可能仍然試圖取一個負值的平方根,導致錯誤。 – Evert

+0

你是對的XD,改變它 – PCK11800

回答

-1

Python的辦法趕上是錯誤的是趕上異常使用try/except結構,而不是試圖以防止發生錯誤。 例如: -

try: 
    answer1 = (minusb+((bsquared-fourac)**0.5))/twoa 
    answer2 = (minusb-((bsquared-fourac)**0.5))/twoa 
    print("X = %s and %s" % (answer1, answer2)) 
except ValueError as e: 
    print("oops: %s" % e) 

異常將繼承Exception類,但在幾乎所有情況下,你會想趕上特定的異常,如(在上例中)ValueError類型的例外。 你可以很容易地得到例外的,你需要通過

  • 趕上閱讀文檔類型
  • 只是運行的代碼(沒有except條款),並讀取錯誤信息:它會給異常的類型被提出。

您可以在異常處理程序中執行任何您認爲合適的錯誤處理。例如如果它捕獲錯誤下面將退出程序:

import sys 
try: 
    answer1 = (minusb+((bsquared-fourac)**0.5))/twoa 
    answer2 = (minusb-((bsquared-fourac)**0.5))/twoa 
    print("X = %s and %s" % (answer1, answer2)) 
except ValueError as e: 
    print("oops: %s" % e) 
    sys.exit(1) 

print "foo"沒有在Python3(你應該通過各種手段使用)不再有效;使用print("foo")代替(有效期在Python2爲好)

+0

爲什麼downvote?標題說「打印而不是錯誤」(問題說「停止而不是錯誤」) –

-1

只需使用

import sys 
sys.exit(1) 

退出終止運行。 1可以是你喜歡的任何數字。通常使用0表示程序已成功執行,而1表示發生錯誤。瞭解更多關於此這裏How to exit from python

0
a = int(raw_input("A?")) 
b = int(raw_input("B?")) 
c = int(raw_input("C?")) 

minusb = -b 
bsquared = b**2 
fourac = 4*a*c 
twoa = 2*a 
determinant = bsquared-fourac 

if determinant<0: 
    print "This quadratic have no real root." 
elif determinant>=0: 
    answer1 = (minusb+((bsquared-fourac)**0.5))/twoa 
    answer2 = (minusb-((bsquared-fourac)**0.5))/twoa 
    print "X = %s and %s" % (answer1, answer2) 

對於二次discrimant = bsqaured-4 *根據其價值根基一個* C 是真實的還是虛構的

-1

看看你的代碼,你正在做一個愚蠢的錯誤由於你的代碼不工作。

看看這三行代碼:

discriminant = bsquared + fourac 

if discriminantt<0: 

elif determinant>=0: 

您正在使用三個不同的變量在不知不覺中。

相關問題