用于循环计算数学表达式

2024-09-27 00:19:44 发布

您现在位置:Python中文网/ 问答频道 /正文

 image description goes here如何编写一个Python for循环来计算以下N次的xN1i0和xN2i0?第一个应该是零!然后上升

xSpanN1=0.232e-6 
xSpanN2=0.09688e-6

xN1i0 = 0.0
xN2i0 = ((xSpanN1/2)+(xSpanN2/2))+xN1i0

xN1i1 = ((xSpanN1/2)+(xSpanN2/2))+xN2i0
xN2i1 = ((xSpanN1/2)+(xSpanN2/2))+xN1i1

xN1i2 = ((xSpanN1/2)+(xSpanN2/2))+xN2i1
xN2i2 = ((xSpanN1/2)+(xSpanN2/2))+xN1i2

xN1i3 = ((xSpanN1/2)+(xSpanN2/2))+xN2i2
xN2i3 = ((xSpanN1/2)+(xSpanN2/2))+xN1i3
....
..
.
.

Tags: forxn1i1xspann1xn1i0xn1i2xn2i2xn2i0xn2i3
3条回答
increment = xSpanN1/2+xSpanN2/2
[xN1i0,xN1i0,
    xN1i1,xN1i1,
    xN1i2,xN1i2,
    xN1i3,xN1i3,
    #....
] = range(increment*N, increment)

您可以动态地生成名称xN1i0等,例如使用eval

eval('['+,','.join(['xN1i{},xN2i{}'.format(n,n) 
                for n in range(N)])+']') =
    range(increment*N, increment)

填充变量名可能也是一个好主意,例如:

import math
def var_names(n, num_length = math.log(N,10)):
    num_string = str(n).zfill(num_length)
    return 'xN1i{},xN2i{}'.format(
             num_string, num_string)

eval('['+,','.join([var_names(n) 
                for n in range(N)])+']') =
    range(increment*N, increment)

您实际上不需要两个变量,计算xN1i并从中删除((xSpanN1 / 2) + (xSpanN2 / 2))以获得xN12

xSpanN1 = 0.232e-6
xSpanN2 = 0.09688e-6
xSpan = ((xSpanN1 / 2) + (xSpanN2 / 2))

xN1i = 0.0
for _ in range(10):
    xN1i += xSpan
xN12 = xN1i - xSpan

或使用生成器表达式和sum

xN1i = sum(xSpan for _ in range(10))
xN12 = xN1i - xSpan

删除迭代名称末尾的数字,只需使用两个变量并将它们放入for循环

xSpanN1=0.232e-6 
xSpanN2=0.09688e-6

xN1i = 0.0
xN2i = ((xSpanN1/2)+(xSpanN2/2))+xN1i

for _ in range(20):
    xN1i = ((xSpanN1/2)+(xSpanN2/2))+xN2i
    xN2i = ((xSpanN1/2)+(xSpanN2/2))+xN1i

相关问题 更多 >

    热门问题