0

整数の2次元リストを取り、テーブルの各行の合計が偶数になる場合はTrueを返し、それ以外の場合はFalseを返す関数evenrow()を実装しようとしています(つまり、一部の行の合計が奇数の場合)

    usage
    >>> evenrow([[1, 3], [2, 4], [0, 6]])
    True
    >>> evenrow([[1, 3], [3, 4], [0, 5]])
    False

これは私がこれまでに得たものです:

    def evenrow(lst):
        for i in range(len(lst)-1):
            if sum(lst[i])%2==0:     # here is the problem, it only iterates over the first item in the lst [1, 3] - i cant figure this out - range problem?      
                return True
            else:
                False

最初の項目だけでなく、リスト内のすべての項目 [1, 3]、[2, 4]、[0, 6] を反復処理するループを取得するにはどうすればよいですか?

さて、私は今ここまで来ました:

    def evenrow(lst):
        for i in range(len(lst)-1):
            if sum(lst[i]) %2 >0:
                return False
        else:
            return True

さまざまなリストを実行すると、次の答えが得られます。

     >>> evenrow([[1, 3], [2, 4], [0, 6]])
     True
     >>> evenrow([[1, 3], [3, 4], [0, 5]])
     False
     >>> evenrow([[1, 3, 2], [3, 4, 7], [0, 6, 2]])
     True
     >>> evenrow([[1, 3, 2], [3, 4, 7], [0, 5, 2]])
     True

(ただし、最後のものは正しくありません-Falseである必要があります)これが機能しない理由がわかりません...

4

1 に答える 1

0

あなたは帰りが早すぎます。すべてのペアをチェックし、True後でのみ返すFalseか、奇数の合計が検出された場合に返す必要があります。

スポイラー警告:

def evenrow(lst):
    for i in range(len(lst)-1):
       if sum(lst[i]) % 2 != 0:     # here is the problem, it only iterates over the first item in the lst [1, 3] - i cant figure this out - range problem?      
           return False
    return True

これで目標が達成されます。

于 2013-05-18T01:22:35.260 に答える