2016-12-02 66 views
1

我正在通过John Zelle的Python书中的课程。我得到了第15章15节,他希望我能写出一个计划。嵌套循环交替操作符(没有条件语句)

输入 要总结的n个术语。 过程 N = 4/1 - 4/3 4/5 + - + 4/7 4/9 .... 输出 总和Ñ

的我不是在点在那里,他教条件陈述。所以我假设他希望我们使用for循环来完成这个任务。这可以在没有条件声明的情况下完成吗?

2 def main(): 
    3  n = eval(input("Enter the number of terms: ")) 
    4  sum =1 
    5  term1 = 1 
    6  term2 =1 
    7 
    8  for j in range(1,n,1): 
    9   term1 = 4 /j 
10   for i in range(j): 
11    # I was able to iterate through the first 4/1 -4/3 
12    term2 = 4/(j+2) 
13    term4 = -4/(j+2) 
14    
15    
16   term3 = term1 - term2 
17   term4 = term3 + term4 
18   print(term3, term4) #How to iterate for 4/5 + 4/7 -4/9.. 
19 
20 main() 

回答

0

这是我采取的方法:作为分子,并通过2尺寸增大分母,但交替符号

tot = 0 
denominator_size=1 
denominator_sign=1 
for i in range(n): 
    tot += 4/(denominator_sign*denominator_size) 
    denominator_size += 2 
    denominator_sign = denominator_sign * (-1) 
print(tot) 

您添加了该系列有4个。因此,我将分母设置为乘法在一起的两个不同变量:denominator_size,它将在每个周期中仅增加2,并从1开始(如此1,3,5,...)和denominator_sign,它们从1开始,然后是每个周期乘以-1(所以1,-1,1,-1,...)。

使用变量总和通常被认为是不好的做法,因为它被python用作加入列表和东西的关键工作。所以我将跟踪变量更改为tot。我也发起了总计为0(你的代码显示sum = 1,我不明白)。

最后,你不需要两个嵌套循环。如果你有两个嵌套循环,就好像你正在求和一个二维数组。在这里,你只是添加一维系列。

+0

谢谢你,为我澄清这一点。 –

+0

准备就绪时请标记为正确 –