2016-12-02 21 views
1

私はJohn ZelleのPythonブックでレッスンを行っています。私は第3章15に行きました。ここで彼は私に意志のあるプログラムを書いて欲しいのです。入れ子式forループの繰り返し(条件文なし)

入力 合計する用語のn。 プロセス のn = 1分の4〜3分の4 + 4/5 - N

の4/7 + 4/9 .... 出力 合計私は彼の点ではないです条件文を教える。だから私は彼が私たちにループを使ってこれをさせることを望んでいると思う。これは条件文なしで行うことができますか?

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

これは私が取るアプローチです:

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を有し、かつ2によってサイズが増加分母が、記号で交互に。だから私は2つの異なる変数として分母を設定しました:denominator_sizeは1サイクルごとに2ずつ増加し、1(1,3,5、...)で始まり、1で始まるdenominator_signで始まります。各サイクル(-1、-1,1、-1、...)で-1を掛けます。

変数sumを使用することは、リストや要素を追加するための重要な作業としてPythonで使用されるため、一般的には貧弱な方法です。そこで、トラッキング変数をtotに変更しました。私も0にtotを始めました(あなたのコードは私が理解できなかった合計= 1を示しました)。

最後に、2つのネストループは必要ありません。 2つのネストされたループがある場合は、2次元配列を合計しているようなものです。ここでは、1次元のシリーズを追加するだけです。

+0

ありがとう、私のためにこれを明確にしました。 –

+0

準備が整ったら正しいと印を付けてください –

関連する問題