1
def fillaray(size):

    num = [0] * size
    num = [random.randint(0,9) for i in range(size)]
    print(num)

    return num


def totalOdds(num, size):

    for i in range (size):
        if i % 2 ==0:
            odd = num[i]
            i+1
    print(odd)

ご覧のとおりdef totalOdds()、配列 "num" から奇数要素を分離しようとしています。奇数要素のすべての値を加算する予定です。誰かが私が間違っていることを正しい方向に向けることができますか?

ありがとう。

4

4 に答える 4

0
nums = [1,2,3,4,5,6,7,8,9,10,11,12]
odds = [ n for n in nums if n%2 ]
print odds

与えます:

>>> 
[1, 3, 5, 7, 9, 11]

これは、次のように関数に入れることができます。

def getOdds(aList):
    return [ n for n in aList if n%2 ]

使用例:

myOdds = getOdds(nums)
print("{0} has {1} odd numbers which were {2}".format(nums,len(myOdds),myOdds))
print("The odd numbers sum to {0}".format(sum(myOdds)))

プロデュース:

>>> 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] has 6 odd numbers which were [1, 3, 5, 7, 9, 11]
The odd numbers sum to 36

あなたが間違っていることについては、thisの要素0を含む iterable を反復処理しているため、常に値になるとは限りません (実際にでない限り)。反復している値を表すと、それは偶数であることを意味します。オッズが必要な場合は、数値が2で割り切れてはなりません。したがって、これを または のいずれかに変更する必要があります。また、ループのにリストを宣言する必要があるため、選択制御構造で条件を満たす番号を追加できます。次のようにして番号を追加する必要がありますsizenumnumrange(size)inumif i%2 == 0if i%2 != 0if i%2oddfor i ...numif i%2numodd.append(i)、現時点では、奇数に新しい値を再割り当てしています。また、インクリメントしないでくださいi'i' は、 の数値のインデックスではnumなく、の数値を表す必要があります。num

于 2013-05-04T02:30:30.227 に答える
0

配列内の奇数の場所にある要素の合計を見つけようとしている場合:

def totalOdds(num, size):

    for i in range(size):
        if i % 2 ==0 :
            odd += num[i]
    print(odd)

奇数値要素を合計しようとしている場合:

def totalOdds(num, size):

    for i in range(size):
        if num[i] % 2 !=0 :
            odd += num[i]
    print(odd)
于 2013-05-04T02:32:05.267 に答える