2014-05-07 71 views
0

我在寫一段代碼來幫助我解決Python中的勾股定理。問題是,我不斷收到這樣的出錯時,我的代碼試圖求解B.值錯誤:Python中的數學域錯誤

這是一個總是給我的問題位:

bsqr = (int(c) ** 2) - (int(a) ** 2) 
b = int(bsqr)/sqrt(bsqr) 

我得到這個錯誤:

Traceback (most recent call last): 
File "<pyshell#24>", line 1, in <module> pythag() 
File "C:\Python34\fact.py", line 156, in pythag 
b = int(bsqr)/sqrt(bsqr) 
ValueError: math domain error 

是什麼導致這個錯誤,我該如何解決它?

+0

顯示完整的代碼。可能有一個/由0或類似的東西。 – thecoder16

+2

這可能太簡單了,但是一個非常有用的調試工具是將所有變量「打印」出來。在這種情況下,'print(a,c,bsqr)'應該給你一個很大的線索。 – DSM

回答

4

這很可能是因爲bsqr爲負數,並且取一個負數的sqrt不起作用。

>>> import math 
>>> math.sqrt(-1) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: math domain error 

檢查你的代數/輸入。 c(該斜邊)應總是會比這兩個腿(ab


的也較大,側面說明,你也可以得到一個ZeroDivisionError如果你恰巧放在值ac這是相同的(在int之後截斷它們)。

+0

'i'(或'j')不同意! – jonrsharpe

+0

@jonrsharpe - 數學運算,但不能與'math.sqrt' ;-)。但聰明的評論毫不遜色。 – mgilson