# 数学関数を使うためのモジュールをimportする。 import math # 入力を求めるメッセージを標準出力に書き出す。 print('y = exp(x):') print('x?') # input関数で値を読みこむ。 x = float(input()) # 入力値xの絶対値が10より大きい場合は、 # 正しく計算できない可能性があるので何もしないで終了する。 # 絶対値は関数fabsによって求められる。 if math.fabs(x) > 10.: sys.exit(0) # 指数関数の値を、テイラー級数として計算する。 # 求める級数をyとする。 # はじめにyにゼロを代入する。 y = 0. # 指数をnとする。 # 指数がゼロの項から計算するので、nにゼロを代入する。 n = 0 # ここからループが始まる。 # ループの中では各項の値を計算し、変数yに加えていく。 # while文の条件をTrueと書き、常に真になるようにして、ループを作る。 while True: # nの階乗の値を求める。 # オーバーフローを防ぐため、 # 整数ではなく浮動小数点で計算する。 # はじめに変数cを1.0にする。 c = 1. # 変数cに1,2,...,nを順にかけていく。 # range関数を用いて、mの値の範囲を1 <= m < n+1に指定している。 for m in range(1, n+1): c = c * m # 各項の値を求める。 # xのn乗をnの階乗で割った値を求め、変数y1に代入する。 y1 = math.pow(x, n) / c # 変数y1の値の絶対値が10^-6以下になったら、 # while文から抜けて計算を終了する。 if math.fabs(y1) < 1.0e-6: break # 変数yに変数y1の値を加える。 y = y + y1 # 指数Nの値をひとつ進める。 n += 1 # whileとこの行の間の処理を、 # 終了する条件を満たすまで反復することになる。 # 結果を標準出力に書き出す。 print('y =', y)