我是 python 初學者,我不明白我為這段代碼得到的錯誤。
我試圖使用平分線方法找到等于或接近 100mm/0.1m 的 x 值。
這是我的錯誤:
如果 z <= 100:
TypeError: '<=' 在 'NoneType' 和 'int' 的實體之間不受支持
代碼:
xL, xR = 0, 10
m= 800
k=5E6
xM = (xL xR)/2
def dispcalc(m,k,xM): #Dispalcement Function
xL, xR = 0, 10 # Initial x Left and x Right
xM = (xL xR) / 2 #Midpoint of xL and xR
print(xM)
z = (dispcalc(m,k,xM))
while z != 100:
xM = (xL xR) /2
if z <= 100:
xR=xM
xM = (xL xR) / 2
z = dispcalc(800, 5E6, xM)
else:
xL = xM
xM = (xL xR) / 2
z = dispcalc(800, 5E6, xM)
dispcalc(800, 5E6, xM)
print(xM, z)
或者另一個錯誤是代碼不列印任何內容,如果我在 def dispcalc 函式中使用 while 回圈。
xL, xR = 0, 10
m= 800
k=5E6
xM = (xL xR)/2
def dispcalc(m,k,xM): #Dispalcement Function
xL, xR = 0, 10 # Initial x Left and x Right
xM = (xL xR) / 2 #Midpoint of xL and xR
print(xM)
z = (dispcalc(m,k,xM))
while z != 100:
xM = (xL xR) /2
if z <= 100:
xR=xM
xM = (xL xR) / 2
z = dispcalc(800, 5E6, xM)
else:
xL = xM
xM = (xL xR) / 2
z = dispcalc(800, 5E6, xM)
dispcalc(800, 5E6, xM)
print(xM, z)
uj5u.com熱心網友回復:
您的函式dispcalc缺少return宣告。目前,您執行一些計算并列印結果,但不要在記憶體中保留對此類結果的任何參考,這就是這樣return做的。因此,dispcalc回傳None。然后您將該值 ( None)分配給變數z,這就是您收到該錯誤的原因。
正確的代碼(在你的第一個片段中):
def dispcalc(m,k,xM): #Dispalcement Function
xL, xR = 0, 10 # Initial x Left and x Right
xM = (xL xR) / 2 #Midpoint of xL and xR
print(xM) #this is in fact not needed
return(xM)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/389569.html
