8

mathモジュールをインポートせずにPythonで分数(たとえば2/3または1/2)を計算する方法はありますか?

コードスニペットは単純です。

# What is the cube root of your number
n = float(raw_input('Enter a number: '))
print(n**(1/3))

非常に単純なコードですが、どこを見てもmathモジュールをインポートするように指示されています。そのスニペットを、作業中のより大きなコードに追加したいだけです。Pythonは.333333333ではなく1/3が0であると感じているため、答えとして1を取得し続けます。.33333を配置することもできますが、これは一時的な修正であり、将来のプロジェクトでこの非常に基本的な計算を実行する方法を知りたいと思います。

4

3 に答える 3

12

必要に応じて、整数除算のリターンフロートを作成するために使用できますfrom __future__ import division(1/3の結果は0.333333 ...になります)。

1.0/3それをしなくても、の代わりに行うことで小数値を取得できます1/3。(1.0は、最初の数値を整数ではなく浮動小数点数にするため、除算が正しく機能します。)

于 2012-10-06T20:51:23.207 に答える
5

標準ライブラリには、分数に対してさまざまなタスクを実行できる分数モジュールがあります。分数の計算が多い場合は、floatに変換せずに計算できます。http://docs.python.org/library/fractions.html

于 2012-10-06T20:55:25.177 に答える
2

小数部と小数部を追加するだけで、演算を浮動小数点数にキャストできます。

>>> n=float(raw_input('Enter a number: ')); print n**(1.0/3)
Enter a number: 2
1.25992104989

または、float明示的に使用します。

>>> n=float(raw_input('Enter a number: ')); print n**(float(1)/3)
Enter a number: 2
1.25992104989

または、Python3の除算スタイルを使用します。

>>> from __future__ import division
>>> n=float(raw_input('Enter a number: ')); print n**(1/3)
Enter a number: 2
1.25992104989

これらの3つの方法のいずれかが機能します。私は最初のものが好きです。

于 2012-10-06T22:02:28.093 に答える