1

私は数学が苦手なので、演習 21 の以下の部分に従っていません。

# A puzzle for the extra credit, type it in anyway.

print "Here is a puzzle."

what = add(age, subtract(height, multiply(weight, divide(iq, 2))))

print "That becomes: ", what, "Can you do it by hand?"

説明:

スクリプトの最後にはパズルがあります。ある関数の戻り値を取得し、それを別の関数の引数として使用しています。関数を使用して数式を作成するように、これをチェーンで実行しています。非常に奇妙に見えますが、スクリプトを実行すると結果が表示されます。あなたがしなければならないことは、この同じ一連の操作を再現する通常の公式を見つけようとすることです。

私の質問は、正規の式とは何ですか?どのように計算したのですか?

4

2 に答える 2

4

あなたのコード行:

what = add(age, subtract(height, multiply(weight, divide(iq, 2))))

に変換:

age + (height - (weight * (iq / 2)))

操作の順序により、次のように簡略化できます。

age + height - weight * iq / 2

または英語で:

Age plus Height subtract Weight times half of IQ

私がそれを解決した方法は、ステートメントを少し拡張して読みやすくすることでした。

ステップ1:

add(
    age, subtract(
        height, multiply(
            weight, divide(
                iq, 2
            )
        )
    )
)

次に、最も内側のステートメントから始めて、各ステートメントを翻訳します。

ステップ2:

add(
    age, subtract(
        height, multiply(
            weight, (iq / 2)
        )
    )
)

ステップ 3:

add(
    age, subtract(
        height, (weight * (iq / 2))
    )
)

ステップ 4:

add(
    age, (height - (weight * (iq / 2)))
)

ステップ 5:

age + (height - (weight * (iq / 2)))

編集:

次の基本レベルの理解が必要です。

multiply(x, y) is equivalent to x * y
add(x, y) is equivalent to x + y
subtract(x, y) is equivalent to x - y
divide(x, y) is equivalent to x / y

次に、これらを組み合わせることができることも理解する必要があります。

multiply(x, add(y, z)) is equivalent to multiply(x, (y + z)), and  x * (y + z)

(y + z)埋め込み関数では常に内部の値が最初に計算されるため、最初に計算する必要があることを示すために括弧を付けました。

于 2013-11-04T06:07:25.180 に答える
1

「正規の式」は次のとおりです: 年齢 + (身長 - (体重 * (iq / 2)))

理由については、コードから始めます。

add(age, subtract(height, multiply(weight, divide(iq, 2))))

このコードがdivide(iq, 2)最初に実行され、(iq/2) が得られます。視覚化するために、関数を「通常の」結果に置き換えます。

add(age, subtract(height, multiply(weight, (iq/2))))

その値で、multiply(weight, (iq/2))計算できます。weightiq/2が掛け合わされます-- weight*(iq/2). 繰り返しますが、関数を「通常の」結果に置き換えます。

add(age, subtract(height, (weight*(iq/2)))

`subtract(height, (weight*(iq/2))) が計算され、最初の引数から 2 番目の引数が減算されます。

add(age, (height - (weight * (iq/2))))

最後に、add()が評価され、方程式の残りの部分に追加ageされるため、最終的な「通常の」結果は次のようになります。

age + height - (weight * iq/2)
于 2013-11-04T06:23:56.680 に答える