本サイトAIZU ONLINE JUDGE ITP1_4_B へはこちらから
問題:円の面積と円周
半径 r の円の面積と円周の長さを求めるプログラムを作成して下さい。
Input
1つの実数 r が与えられます。
Output
面積と円周の長さを1つの空白で区切って1行に出力して下さい。出力は浮動小数点数とし、0.00001 以下の誤差を含んでもよいものとします。
Constraints
- 0 < r < 10,000
Sample Input 1
2
Sample Output 1
12.566371 12.566371
Sample Input 2
3
Sample Output 2
28.274334 18.849556
解答例
import math
r = float(input())
print('{0:.6f} {1:.6f}'.format(r*r*math.pi, 2*r*math.pi))
または
from math import pi
r = float(input())
print('{0:.6f} {1:.6f}'.format(r*r*pi, 2*r*pi))
解説
以下のように解いていきます。
1つの実数の読み込み
Pythonでは、実数は 浮動小数点数(floating point number) という形式で、 float型 と呼ばれます。
ここでは、input関数をfloat関数で囲み実数値として取得します。
# input関数をfloat関数で囲み実数値を取得
r = float(input())
円の面積と円周の長さの表示
円の面積の公式は 半径 × 半径 × π
円周の長さの公式は 2 × 半径 × π
半径rは1つの実数の読み込みで求めていますので、π(円周率)を求めることで答えを導き出す事ができます。
π(円周率)はmathモジュールをインポートすることで使用する事ができます。
mathモジュールとは
mathモジュールはPythonの組み込みモジュールの1つです。度数法・弧度法の変換や三角関数、指数関数、対数関数、円周率、ネイピア数等、数学処理に必要となる機能が一通り揃ったモジュールです。
文頭に”import math”と宣言しておくと、数学処理に必要となる機能が使えるようになります。
以下ではmathモジュールを使用して、π(円周率)を表示しています。
import math
print(math.pi)
# 3.141592653589793
from math import pi と宣言し、math.pi を呼びだしておけば、pi という名前で円周率を扱えます。
from math import pi
print(pi)
# 3.141592653589793
今回はmathモジュールをインポートし、円の面積と円周の長さを表示します。
import math
r = float(input())
# 円の面積(r*r*math.pi) 円周の長さ(2*r*math.pi)
print('{0:.6f} {1:.6f}'.format(r*r*math.pi, 2*r*math.pi))
print関数で表示する際に、format関数を使用し書式を設定しています。今回は”0.00001 以下の誤差を含んでもよい”の制限(Constraints)から少数第六位までを表示するため、'{0:.6f} {1:.6f}’のように’.6f’と設定します。
from math import piを宣言した場合は以下のようになります。
from math import pi
r = float(input())
# 円の面積(r*r*pi) 円周の長さ(2*r*pi)
print('{0:.6f} {1:.6f}'.format(r*r*pi, 2*r*pi))
※サイト内「AIZU ONLINE JUDGE ITP1_1_Dをpythonで解いてみた」の、format関数とはにformat関数の使用方法が書かれておりますのでよかったらご覧ください。
最後に、もう一度プログラムを確認してみましょう。
import math
# input関数をfloat関数で囲み実数値を取得
r = float(input())
# 円の面積(r*r*math.pi) 円周の長さ(2*r*math.pi)
print('{0:.6f} {1:.6f}'.format(r*r*math.pi, 2*r*math.pi))
または
from math import pi
# input関数をfloat関数で囲み実数値を取得
r = float(input())
# 円の面積(r*r*pi) 円周の長さ(2*r*pi)
print('{0:.6f} {1:.6f}'.format(r*r*pi, 2*r*pi))
コメント