（小学生向け・Python）モジュールを使ってみよう

# フォートナイトのドラゴンボールコラボ、バリアツくね！？  
ここんとこフォートナイトでかめはめ波ばっかり打ってるリッキーです。打っただけで満足するので、ビクロイ全然取れてません。かめはめ波のためにインゴット全部使い果たしました。  

# んなことたぁどうでもイイのよ！！  
今日も元気にpythonやってきましょう！  

# Python の便利な機能を使い倒そう！  
これを読んでるほとんどの人がpythonが最初に勉強する言語だと思うので、他のプログラミング言語を知らない人が多いと思います。他言語と比較したときのpythonのいいところは  
・文法がシンプルで簡単
・プログラムの量が少なくて済む
などありますが、特にすごいポイントは  
**・pythonで用意されてる機能や、python用に作られている便利な機能がたくさんある**  
ことです。今回はpythonで使われる便利な機能のほんの一部を紹介していこうと思います。  
  
# Pythonにもとから備わってる標準機能＝「モジュール」  
pythonには、for文やif文などのプログラミングの基本的の機能以外に、便利な機能が用意されていますが、デフォルト（初期状態）では使えなくなっているものがいくつかあります。その代表的なものがrandom（ランダム）モジュールです。実際に書いて使ってみましょう。  
## randomモジュール
### randomモジュールの他の機能① ランダムな少数の値（０－１）
0から１までのランダムな少数が表示されるプログラムです。ランダムであることを証明するために、わざとfor文で３回繰り返しています。
```python
for i in range(3):
    print(random.random())
```

エラーがでる！？そんな馬鹿な！！  
っていうのは冗談で、これには大事な一文が抜けています。pythonで用意されている便利なモジュールは、そのままでは使えません。「このモジュール使うよ！」と先に教えて上げる必要があります。 
>import　使いたいモジュールの名前  

という一文を付け加える必要があります。import = インポート  
```python
import random
for i in range(3):
    print(random.random())

#実行結果(例)：
0.5429376663235608
0.9329531739156705
0.0857588231014792
```

### randomモジュールの他の機能② ランダムな整数の値
ランダムな数字を出したいとき、少数以外に整数を出したいときもありますよね？大丈夫、もちろんその機能も用意されてます。そう、pythonならね。（元ネタは検索してくれ！)  
>引数A以上　引数B以下のランダムな整数（A,Bともに整数）
random.randint(引数A、引数B)  


```python
import random

print(random.randint(0, 100))
print(random.randint(2, 10))
print(random.randint(200, 250))
```  

これで簡単に、pythonでビンゴマシンが作れますね。試しに作ってみましょう。ビンゴマシンは、一度出てきた数字がまた出てきては困るので、重複のないランダムな数字のリストを作りましょう。今までやってきた内容が割りと総動員されているので、分からないところがあったら[過去の教材](https://qiita.com/ricky-sensei)　を見て復習しましょう。
```python
import random

# a以上B以下の数字が１０個はいった、ビンゴのあたり番号リストを作成
def bingo(a, b):
  number_list = [] # 空のリストを作成

  while len(number_list) < 10:     # リストの長さが１０未満の場合ずっと繰り返す
    number = random.randint(a, b)  # a以上b以下のランダムな整数を一つ用意
    if not number in number_list:  # もしその整数がリストの中になかったら
      number_list.append(number)   # リストに追加
  return number_list               # 返り値としてnumber_listを返す

print(bingo(0, 20))
```  
実行結果として、   
[56, 9, 93, 78, 11, 59, 51, 38, 89, 2]  
のような、要素の数が１０の、重複がないリストになればOKです。重複しないのを確認するために、何回か実行してみましょう.  
randomモジュールの機能はこれだけではありません。暇なひとは[ここ]()を除いてみてはいかがでしょうか。(プロ用の公式ドキュメントなのでは？ってなるかもしれませんが、なんかいろいろあるんだな、みたいに思ってくれればと思います。)  
  
  
ちょっと注目してほしいのは、　**.** **=ピリオド** の使い方です。大抵の場合、このピリオドは「の」と言い換えると、意味が通じます。random.randint()の場合は「randomモジュール『の』randint()メソッド」みたいな感じになります。  
  
他のモジュールも見てみましょう。  
## datetimeモジュール：日付けに関するデータを扱うモジュール  
ここでは細かい書き方を覚えたりしません。どうせ忘れるので。プログラミングで、基本文法はおぼえなくちゃダメですが、こういうモジュールの使い方などは、忘れることは全然悪いことではありません。なぜなら、こういうモジュールは流行りすたりがあったり、より素晴らしいモジュールが開発されて、今使われているモジュールが廃止されたりってことはよくあるからです。忘れた場合大事なのは、ネット上の情報などを正しく読んで、正しく理解して、正しく利用する力です。 
ためしに、pythonでの今日の日付けの取得方法をググってみましょう。「python 日付　今日」とかって調べてみると、出てくるかも。  

  
 ![images.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2732489/d6deca97-d01b-52d4-bbb8-5110429e4de2.png)


ググった？OK,では答えの一例を書きますね。  
```python
import datetime

today = datetime.date.today()
print(today.strftime('%Y-%m-%d'))

# 実行結果（例：２０２２年８月２３日の場合）：2022-08-23
```

ここで、もう一回ピリオドに注目しましょう。
上のコードでは、today という変数に、datetimeモジュール「の」date「の」today()メソッドを入れています。その下のprint文では、today「の」strftime() メソッドを使ったものを出力しています。  
つまり、これは、  
datetimeモジュール「の」date「の」today()メソッド「の」strftime()メソッド  
を出力しているのと同じです。  
```python
import datetime

print(datetime.date.today().strftime('%Y-%m-%d'))
```  
なぜ上のようにしないか分かりますか？例えば、先生が住んでいる八幡平市平舘というところを、東北を全然知らない沖縄の人に説明するとします。
「東北の岩手県の八幡平市の平舘の。。。」というように一気にまくしたてるのと、  
「東北の岩手県ってわかる？そう、一番でっかい県！そこの端っこの方に八幡平っていう市があってさ。。。」と、段階を踏んで説明するのと、どちらがイケてる説明だと思いますか？  
みなさん、イケてるプログラマーになりましょう。  
  
### 他にもモジュールがたくさん！
いい機会なので、色々ググってみましょう。例えば、自分が生まれた日は何曜日だったかとか、pythonで出力する方法を調べてみましょう。あえて答えはここに書かないでおきますね！  

# ちょうどいいから↑宿題にしよ！よっしゃ今日のリッキーの仕事おわり！
ってことで今週の宿題よろしく！良いコードがあったら丸パクリでもいいけど、実際に動かしてみるのを忘れないで！