2

私はpythonを学ぼうとしており、マイルをキロメートルに変換し、変換でテキストを返す簡単な式を作成しようとしています.

ここに私が持っているものがあります:

def mile(x):
    z = x * 1.609344
    print "%.2f" % z

x = float(raw_input("How many miles are you traveling? "))  

z = mile(x)

print "That's about % kilometers." % z

誰かがなぜこれがうまくいかないのか説明できますか? マイル関数を設定して、変換された文を出力することは間違いなくできましたが、それはしたくありませんでした。

4

3 に答える 3

10

関数は結果を返す必要があります。

def mile(x):
    z = x * 1.609344
    return z
于 2012-05-20T17:09:19.427 に答える
1

いくつかの問題があります。1 つ目は、関数が値を返さないことです。行z = mile(x)が実行mile(x)されると、 part は によって返されたものに置き換えられmileます。必要なコードは次のとおりです。

def mile(x):
    z = x * 1.609344
    return z

これをどの変数に割り当てるかは無関係であることに注意してください。返される変数と一致する必要はありません。たとえば、両方ともy = mile(x)z = mile(x)指定された変数に適切に割り当てられます。

次に、文字列の書式設定が機能しません。のように見える部分です"That's about % kilometers." % z。文字列の書式設定は、指定された変数に置き換え%<identifier>られます。 where<identifier>は、変数の型を示します (また、表示方法に関する情報も含まれる可能性があります)。識別子が必要になるfか、以前の print ステートメントのように.2f"That's about %.2f kilometers." % z

于 2012-05-20T18:46:17.690 に答える
1

説明として:

結果を variable に代入できるように、関数から計算/変換の値を返す必要がありますzその後、印刷することができます。

以前は、関数の値を出力していましたが、何も返さなかったため、z割り当てられNoneたため、下部の出力が機能しませんでした。

一般に、関数内で作業/計算を行ってから、使用方法を決定できる値を返すのが最善です。

@wim は、関数の正しいコードを示しています。今なら

z = mile(x)
print "That's about %.2f kilometers." % z

期待していた結果が得られます。(@Aaron Dufourが指摘した正しいフォーマットに注意してください。結果を印刷すると、小数点の後ろに2桁の数字が表示されます)ちなみに、最初のprintステートメントは正しく、2番目のステートメントだけが完全なフォーマットディレクティブを欠いていました。

于 2012-05-20T17:24:15.560 に答える