2016-05-09 206 views
0

Pythonでforループを書く方法を理解する必要があります。これは、入力が与えられた奇数の整数の和を出力しません。サム関数を使うことも、リストを作ることもできません。これまで私が持っていたのはこれです:Pythonで奇数の整数の和

def sumofoddints (n): 

    n >= 1 

    total = 0 

    for num in range (1, n): 

     if num % 2 == 1: 

      total += n 

    return total 

これは私に正しい合計を与えないので、私はそれを修正する方法がわかりません。

+0

「n」は、考慮されている値の範囲の上限を定義します。したがって、それを 'total'に追加すると動作しません。代わりに 'num'を追加してください。 –

答えて

3

total += numである必要があります。間違った変数を追加するだけです。

+0

修正ですが悪い悪いものです。これはO(n)で動作し、O(1)で計算できる数式を使用します。 – user853710

+1

これはOPが探していた答えです。 –

3

数学を使用するとはるかに簡単な方法があります。

編集: 申し訳ありません。ここで補正式

def sumOdd(n): 
    return ((n+1)/2)**2 

N = 1 => 1 = 1

N = 3 => 1 + 3 = 2 ** 2 = 4

N = 5 =>である1+ 3 + 5 = 3 ** 2 = 9

N = 7 => 1 + 3 + 5 + 7 = 4 ** 2 = 16

+0

番号。 ** 正しい。 n + 1平方。 – user853710

+0

私は5を入力すると1 + 3 + 5 = 9が加算されるので、動作しないようにする必要があります。 – Pichu2016

+0

こちらです。 – user853710

0

Pythonは、この超簡単

def sumOdd(n): 
    if n%2 == 0: 
    n -= 1 
    return sum(range(1,n,2))+n 
を行います

範囲(1、n、2)は1から始まり、nが に達するまで2桁でカウントされます(範囲は最後の桁を除きます。たとえば、範囲(0,2)は0,1ではない0,1,2

sum(list)関数は、リスト内のすべての項目の合計を返します。

EDIT:偶数の整数でも機能しないので、偶数の場合は-1を追加しました。

+0

です。これはO(n)で計算され、O(1)で計算できます。 – user853710

+0

良い点。それは理にかなっている。 –

+1

OPは「私は合計関数を使うことはできないか、リストを作ることはできません」と書いています。 –

関連する問題