フォートナイトのドラゴンボールコラボ、バリアツくね!?
ここんとこフォートナイトでかめはめ波ばっかり打ってるリッキーです。打っただけで満足するので、ビクロイ全然取れてません。かめはめ波のためにインゴット全部使い果たしました。
んなことたぁどうでもイイのよ!!
今日も元気にpythonやってきましょう!
Python の便利な機能を使い倒そう!
これを読んでるほとんどの人がpythonが最初に勉強する言語だと思うので、他のプログラミング言語を知らない人が多いと思います。他言語と比較したときのpythonのいいところは
・文法がシンプルで簡単
・プログラムの量が少なくて済む
などありますが、特にすごいポイントは
・pythonで用意されてる機能や、python用に作られている便利な機能がたくさんある
ことです。今回はpythonで使われる便利な機能のほんの一部を紹介していこうと思います。
Pythonにもとから備わってる標準機能=「モジュール」
pythonには、for文やif文などのプログラミングの基本的の機能以外に、便利な機能が用意されていますが、デフォルト(初期状態)では使えなくなっているものがいくつかあります。その代表的なものがrandom(ランダム)モジュールです。実際に書いて使ってみましょう。
randomモジュール
randomモジュールの他の機能① ランダムな少数の値(0-1)
0から1までのランダムな少数が表示されるプログラムです。ランダムであることを証明するために、わざとfor文で3回繰り返しています。
for i in range(3):
print(random.random())
エラーがでる!?そんな馬鹿な!!
っていうのは冗談で、これには大事な一文が抜けています。pythonで用意されている便利なモジュールは、そのままでは使えません。「このモジュール使うよ!」と先に教えて上げる必要があります。
import 使いたいモジュールの名前
という一文を付け加える必要があります。import = インポート
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)
import random
print(random.randint(0, 100))
print(random.randint(2, 10))
print(random.randint(200, 250))
これで簡単に、pythonでビンゴマシンが作れますね。試しに作ってみましょう。ビンゴマシンは、一度出てきた数字がまた出てきては困るので、重複のないランダムな数字のリストを作りましょう。今までやってきた内容が割りと総動員されているので、分からないところがあったら過去の教材 を見て復習しましょう。
import random
# a以上B以下の数字が10個はいった、ビンゴのあたり番号リストを作成
def bingo(a, b):
number_list = [] # 空のリストを作成
while len(number_list) < 10: # リストの長さが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]
のような、要素の数が10の、重複がないリストになればOKです。重複しないのを確認するために、何回か実行してみましょう.
randomモジュールの機能はこれだけではありません。暇なひとはここを除いてみてはいかがでしょうか。(プロ用の公式ドキュメントなのでは?ってなるかもしれませんが、なんかいろいろあるんだな、みたいに思ってくれればと思います。)
ちょっと注目してほしいのは、 . =ピリオド の使い方です。大抵の場合、このピリオドは「の」と言い換えると、意味が通じます。random.randint()の場合は「randomモジュール『の』randint()メソッド」みたいな感じになります。
他のモジュールも見てみましょう。
datetimeモジュール:日付けに関するデータを扱うモジュール
ここでは細かい書き方を覚えたりしません。どうせ忘れるので。プログラミングで、基本文法はおぼえなくちゃダメですが、こういうモジュールの使い方などは、忘れることは全然悪いことではありません。なぜなら、こういうモジュールは流行りすたりがあったり、より素晴らしいモジュールが開発されて、今使われているモジュールが廃止されたりってことはよくあるからです。忘れた場合大事なのは、ネット上の情報などを正しく読んで、正しく理解して、正しく利用する力です。
ためしに、pythonでの今日の日付けの取得方法をググってみましょう。「python 日付 今日」とかって調べてみると、出てくるかも。
ググった?OK,では答えの一例を書きますね。
import datetime
today = datetime.date.today()
print(today.strftime('%Y-%m-%d'))
# 実行結果(例:2022年8月23日の場合):2022-08-23
ここで、もう一回ピリオドに注目しましょう。
上のコードでは、today という変数に、datetimeモジュール「の」date「の」today()メソッドを入れています。その下のprint文では、today「の」strftime() メソッドを使ったものを出力しています。
つまり、これは、
datetimeモジュール「の」date「の」today()メソッド「の」strftime()メソッド
を出力しているのと同じです。
import datetime
print(datetime.date.today().strftime('%Y-%m-%d'))
なぜ上のようにしないか分かりますか?例えば、先生が住んでいる八幡平市平舘というところを、東北を全然知らない沖縄の人に説明するとします。
「東北の岩手県の八幡平市の平舘の。。。」というように一気にまくしたてるのと、
「東北の岩手県ってわかる?そう、一番でっかい県!そこの端っこの方に八幡平っていう市があってさ。。。」と、段階を踏んで説明するのと、どちらがイケてる説明だと思いますか?
みなさん、イケてるプログラマーになりましょう。
他にもモジュールがたくさん!
いい機会なので、色々ググってみましょう。例えば、自分が生まれた日は何曜日だったかとか、pythonで出力する方法を調べてみましょう。あえて答えはここに書かないでおきますね!
ちょうどいいから↑宿題にしよ!よっしゃ今日のリッキーの仕事おわり!
ってことで今週の宿題よろしく!良いコードがあったら丸パクリでもいいけど、実際に動かしてみるのを忘れないで!