【发布时间】:2022-01-20 12:32:53
【问题描述】:
我是一个 python 初学者,我不明白我收到的代码错误。
我正在尝试使用平分线法找到一个等于或尽可能接近 100mm/0.1m 的 x 值。
这是我的错误:
如果 z
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)
【问题讨论】:
-
print和return表示两个不同的东西。discalc不返回xM的值。 -
你能修复缩进吗?目前还不清楚 dispcalc 函数中的代码是什么。您还混淆了具有相同名称 (xM) 的局部变量和全局变量
-
我已经改变了缩进。我已经尝试将所有内容都放在 dispcalc 函数中
-
此代码不会产生任何输出,因为从未调用过 dispcalc。您需要查看 Python 的按值传递和按引用传递策略以及局部/全局变量
标签: python function while-loop