0

どうすれば関数を作成できますか。1つだけでなく、すべての悪い値を表示しますか?

def get_bad_results(person_results):
        for i in person_results:
                if i[1]>i[3] or i[1]<i[2]:
                    return i[0]

test_results = [["White blood cells",8.5,2,7],
                ["Neutrophils",5.3,2.5,5],
                ["Red blood cells", 12.4, 9,15]]

a = get_bad_results(test_results)
print a

公演White blood cells

それ以外の

White blood cells, Neutrophils
4

5 に答える 5

5

あなたの関数は値でcount_healthy()はないので、です。関数は出力を実行し、その後にが続くため、関数からの出力の後にaの出力を説明します。returnbNoneprint bNone

基本的に、カウントを実行するはずの関数は、おそらく結果を出力するべきではありません、代わりreturnに、呼び出し元が結果を出力するか別の方法で処理するかを決定できるようにする必要があります。

于 2012-11-09T13:03:15.533 に答える
1

関数にはreturnステートメントがないため、暗黙的に。を返しますNone

ステートメントを追加して、return印刷する値を返します。

于 2012-11-09T13:03:29.017 に答える
1

呼び出しごとに複数の結果が予想されるため、ジェネレーター関数を使用するのが最適です。

def get_bad_results(person_results):
    for i in person_results:
        if i[1]>i[3] or i[1]<i[2]:
            yield i[0]

またはジェネレーター式:

def get_bad_results(person_results):
    return (i[0] for i in person_results if i[1]>i[3] or i[1]<i[2])

となることによって

test_results = [["White blood cells",8.5,2,7],
                ["Neutrophils",5.3,2.5,5],
                ["Red blood cells", 12.4, 9,15]]

for i in get_bad_results(test_results):
    print i
print list(get_bad_results(test_results))
print ", ".join(get_bad_results(test_results))

出力を与える

White blood cells
Neutrophils
['White blood cells', 'Neutrophils']
White blood cells, Neutrophils

他の機能については、

def count_healthy(all_results):
    counter = 0
    for i in all_results:
        if len(list(get_bad_results(i))) == 0:
            counter += 1
    return counter

あるいは単に

def count_healthy(all_results):
    return sum(1 for i in all_results if len(list(get_bad_results(i))) == 0)

編集:

多くのget_bad_results()場合、それをリストに変換すると、メモリを大量に消費する可能性があります。

したがって、代わりにlen(list(get_bad_results(i))) == 0使用できます

def has_results(it):
    """Returns True if the iterator it yields any items."""
    return next((True for _ in it), False)

その後

def count_healthy(all_results):
    return sum(1 for i in all_results if not has_results(get_bad_results(i)))
于 2012-11-09T14:03:35.197 に答える
0

関数の結果を印刷しようとしています

a = get_bad_results(test_results)
print a

b =count_healthy(all_results)
print b

デフォルトでは、関数はNoneを返します

于 2012-11-09T13:02:55.587 に答える
0

さて、私はそれを修正しましたが、今

def get_bad_results(person_results):
        for i in person_results:
                if i[1]>i[3] or i[1]<i[2]:
                    return i[0]

test_results = [["White blood cells",8.5,2,7],
                ["Neutrophils",5.3,2.5,5],
                ["Red blood cells", 12.4, 9,15]]

a = get_bad_results(test_results)
print a

見せるWhite blood cells

それ以外のWhite blood cells, Neutrophils

于 2012-11-09T13:33:48.433 に答える