Pythonでmathモジュールを使用し中学・高校で習う階乗を求めてみる

スポンサーリンク

Pythonでmathモジュールを使用し中学・高校で習う階乗を求めてみます。

階乗(かいじょう)とは、「1」から”ある数”までの連続する整数の積のことです。積とは乗法 (掛け算)の結果です。ある数を、数学では「n」とすることが多いです。そのため、「1」から「n」までの連続する「n」個の整数の積を「nの階乗」と呼びます。

なお、階乗(かいじょう)は「n!(エクスクラメーション・マーク,ビックリマーク)」と表します。

今回はmathモジュールを使用することで、この階乗(かいじょう)を簡単に求めることができます。mathモジュールはPythonの標準ライブラリとなっていますので、事前にインストールする必要はありません。

■Python

Google Colaboratory(Google Colab),Python3.7.10

■mathモジュールのfactorial()関数を使用し階乗を求める

では、早速mathモジュールを使用し、階乗を求めてみます。

■コード

import math
print(math.factorial(3))

mathモジュールを使用し、階乗を求める場合は、importでmathモジュールを呼び出します。

呼び出した後に、「math.factorial()」と記述します。これでfactorial()関数を使用することができます。使用可能にした後は、factorial()関数の括弧内に引数,パラメーターとして、「ある数(n)」を渡します。今回は「3」とします。渡した引数,パラメーターを元に、階乗が求めれ結果が返されます。

返された結果をprint()関数で出力します。

■実行

このスクリプトを実行してみます。

実行してみると、mathモジュールのfactorial()関数を使用したことで、引数,パラメーターとして渡した数(3)の階乗が求めれ、結果をprint()関数で出力することができました。簡単に階乗を求めることができます。

■任意の「ある数(n)」を入力し、その階乗を出力する

出力後、任意の「ある数(n)」を入力し、その階乗を出力するスクリプトを書いてみます。

■コード

from math import *
n = int(input("ある数(n)を入力してください:"))
print(factorial(n))

importでmathモジュールを呼び出します。今回は「from math import *」と記述します。これでもmathモジュールを呼び出せます。

呼び出した後に、nという変数を作成し、その中でinput()関数を使用します。input()関数で外部(キーボードなど)からの入力を取得できます。input()関数の括弧内で文字列を出力させることができます。今回は「ある数(n)を入力してください:」とします。

出力させる文字列を設定し、外部から取得したある数(n)をn変数に格納します。この時にint()関数を使用します。int()関数は「ある数(n)」を整数に変換することができます。変換したある数(n)をn変数に格納します。

格納後、factorial()関数を使用します。今回はfactorial()の前に「math」を「from math import *」と記述していますので、記述しません。これでもfactorial()関数を使用することができます。

あとは、先ほどのスクリプトを同じように、factorial()関数の括弧内に引数,パラメーターとしてn変数を渡します。渡した引数,パラメーターを元に、階乗が求めれ結果が返されます。

返された結果をprint()関数で出力します。

■実行

このスクリプトを実行してみます。

実行してみると、input()関数を使用したことで、文字列が出力され、外部からの入力が求められますので、ある数(n)を入力し、Enterキーを押します。

Enterキーを押すと、ある数(n)を元に階乗が求めれ、print()関数で結果を出力させることができました。

■小数の階乗を求めるとどうなるのか?

出力後、ある数(n)を小数にして階乗を求めるとどうなるのか、やってみます。

先ほどのスクリプトを実行し、小数を入力します。今回は「1.5」と入力します。

ValueError Traceback (most recent call last)
<ipython-input-6-08e5e6859f72> in <module>()
1 from math import *
----> 2 n = int(input("ある数(n)を入力してください:"))
3 print(factorial(n))

ValueError: invalid literal for int() with base 10: '1.5'

入力すると、「ValueError: invalid literal for int() with base 10」というエラーが発生します。これは入力した小数(1.5)は10進数に変換できないため発生するエラーとなります。10進数に変換することができないため、factorial()関数を使用することができません。

コメント

タイトルとURLをコピーしました