gpt4 book ai didi

python - 嵌套 while 循环在 python 中无法正确循环

转载 作者:太空宇宙 更新时间:2023-11-03 17:46:21 27 4
gpt4 key购买 nike

我是新人,我对我的 python 代码有疑问。它没有像我想象的那样执行。困惑的部分是在嵌套的 while 中:

import math
mu=4*math.pi*10**(-7) ##mu naught
I=
float(input('Enter a value for the current measured in Amperes: '))
R=abs(float(input('Enter a value for the radius
of the circle measured in meters: '))) ##radius
step=R/200 ##Step size for integration
B=[] ##array for B(r)
J=[]
Plot=[B,J]

k = 1 ##step counter for Circumfrence
j = 1 ##step counter for Radius
b_temp = 0 ##place holder to sum b(step*k)

D_Vector = [R*math.cos(k*math.pi/100),R*math.sin(k*math.pi/100)]
R_Vector = [R-j*step,0]

while(j*step<=R):
while(k*step<=2*math.pi*R):
r=(math.sqrt((R_Vector[0]-D_Vector[0])**2 +
(R_Vector[1]-D_Vector[1])**2))
b_temp = b_temp + (mu/(4*math.pi))*I*step*step/(r**2)
k=k+1
D_Vector = [R*math.cos(k*math.pi/100),R*math.sin(k*math.pi/100)]
R_Vector = [R-j*step,0]
print(round(r,3), j)
B.append(round(b_temp,8))
print('New j value!')
b_temp=0
J.append(round(step*j,3))

j=j+1

它应该逐步减小半径(第一个 while 循环),然后绕圆循环,对每 block 电线的磁场贡献求和。由于某种原因,它没有像应该的那样在外循环的每次迭代中循环通过内循环,老实说我不确定为什么。新的 j 值行是为了让我看看它是否正确循环,这是我的输出:

...
13.657 1
13.884 1
14.107 1
14.327 1
14.543 1
14.756 1
14.965 1
15.17 1
15.372 1
New j value!
New j value!
New j value!
New j value!
New j value!
New j value!
New j value!
New j value!
...

每个浮点末尾的 1(半径值)是 j 值,围绕循环的每个圆都保持为 1...

最佳答案

您正在增加k,但从未将其重置为1。所以k * step变得越来越大,直到内循环的条件变为假。很明显,它不再被执行。

请注意,当您只是在整数范围内迭代时,应该避免使用 while 循环。只需使用 for j in range(a, b) 即可。这完全避免了代码中存在的那种错误。

如果我没记错的话,你可以将循环替换为:

area = 2*math.pi*R

for j in range(1, R//step + 1):
# j*step <= R holds
for k in range(1, area // step + 1):
# k * step <= area holds here

其中 a//bab 的商。

关于python - 嵌套 while 循环在 python 中无法正确循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29757126/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com