階乗|Python|初心者と歩くプログラミング上達への道

こんにちは、鈴です。

 

私はコンピュータ系を専門とする大学1年生です。

 

現在未経験からプログラミングを学んでおり、このブログはそんな私の備忘録であるとともに、同じような状況の方の手助けにもなればいいなという思いがあります。

 

前回の記事はこちら⬇︎

 

riririririn.hatenablog.com

 

 

では、今回のテーマは

 

階乗

 

です。

 

外部から入力された自然数に対して、その数の階乗を求めるプログラムを作成しようと思います。

 

それでは早速いってみましょう!

 

一度自分で解いてみるもよし、この後のプログラム例をみるもよしです!

 

<目次>

 

 

プログラム例

f:id:riririririn:20190108092332p:plain

階乗 Python プログラミング例

 

私の書いたプログラムはこんな感じです。

 

何をやったか簡単に説明すると、

 

①任意の整数を入力してもらいます。

 

②入力された数字が2以上の場合、はじめに0でおいた変数sumに1を足し、2から入力された数字iまでを繰り返しかけてsumをどんどん更新していき、

iまでかけ終わったらsumを出力します。

 

③入力された数字が1の場合、そのまま1を出力します。

 

④入力された数字が②、③以外の数字である場合、"error"と出力します。

 

使った手法

続いて、このプログラムで使った手法について補足していきます。

 

if, elif, else 文

elifを使うと、3つ以上の条件分岐が可能になります。

 

今回は3つですが、elifはいくつも並べることができるためです。

 

ですから、言葉で説明するとしたら

 

「この条件の時〜(if)、この条件の時〜(elif)、・・・、それ以外は〜(else)」

 

という形のイメージになります。

 

for j in range(2,i+1):

これは、2からi(入力された2以上の任意の数字)の間にある任意の文字jについて・・・

 

という表現です。

 

各要素は必ず1回ずつ利用されます。

 

気をつけて欲しいのが、rangeは「1つ目の数字以上、2つ目の数字未満の整数に対して以下の動作を繰り返す」というものなので、

 

iまで行いたい場合は2つ目の数字にjを設定することです。

 

まとめ

 

いかがでしたか?

 

もっと簡単に書ける!という人もいるかもしれません(その場合はコメント等で教えていただけると筆者非常に喜びます)が、参考になっていれば幸いです。

 

プログラミング初心者にはわからないことが多すぎて結構大変ですが、

一緒に頑張っていきましょう!

 

閲覧ありがとうございました。

 

 

追記

この記事を書いていて気づいたのですが、sumをもともと1でおいても問題ないですよね(笑

 

f:id:riririririn:20190323231254p:plain

 

謎に0で始めないほうがスッキリします。

あえてこちらは追記として元のプログラムは残しておきます(笑 

 

あるあるですが、出来上がってから修正をしていくとプログラムを書く前は想像できなかったくらいあっさりとしたプログラムになることがよくあります。

 

できるだけシンプルに汎用性、互換性のあるプログラムを書ける人が優れたプログラマーだと思うので、もっと頑張らないとなあ、、って感じですね。