「土日でわかるPythonプログラミング教室」
・金曜日:環境構築
・土曜日:Pythonプログラミング
・日曜日:Webプログラミング
*************************************************
■土曜日:Pythonプログラミング
<本の内容(1)>
FizzBuzzプログラムを作ってみる。
1.1から100まで出力
2.3の倍数の時には数字ではなくFizzと表示
3.5の倍数の時には数字ではなくBuzzと表示
4.3と5の倍数の時には数字ではなくFizzBuzzと表示
・・・
とりあえず、この本は見ずに、日経ソフトウェア2020年5月号の付録「Pythonチートシート」を見ながら、書いてみました。
ーーーーーーーーーーーーー
for i in range(100):
j=i+1
if j%15 == 0:
print("FizzBuzz")
elif j%3 == 0:
print("Fizz")
elif j%5 == 0:
print("Buzz")
else:
print(j)
ーーーーーーーーーーーーー
ちょっと中身を読んで改造
ーーーーーーーーーーーーー
for i in range(1,101):
if i%3 == 0 and i%5 == 0:
print("FizzBuzz")
elif i%3 == 0:
print("Fizz")
elif i%5 == 0:
print("Buzz")
else:
print(i)
ーーーーーーーーーーーーー
rangeは少し戸惑いました。
for i in range(a,b):
って書いた時は、ついBASICの
for i = a to b
だと思ってしまいます。。。実際には、
for i = a to b-1
です。
正しくは
for i in range(a,b):
は
a ≦ i < b
です。
ということは、
for i in range(b):
って書いたときも、iは0からb-1までb回まわる、と思ってしまっては間違いで、あくまでも
0 ≦ i < b
なのだな。
本では、ここからしばらくPythonの基本文法(変数、演算子、if文、for文等)分の説明が続きます。
昨日の「金曜日:環境構築」は少々敷居が高い感じがしましたが、このあたりの説明はとても丁寧です。
<本の内容(2)>
DockerのLinux環境からgit clone コマンドでチャットボットプログラムのソースをもってくる。
・・・
うーむ。Windows10+Anaconda+Pycharmだとどうすればいいのかな・・・カミさんに聞いて、GitHubからソースを単純にダウンロードすることにしました。
GitやGitHubについては、また別の機会に確認することにします。
コピーしたソースを走らせるとエラーが発生・・・えぇと、一連のエラーの発端は、
UnicodeDecodeError: 'cp932' codec can't decode byte 0x87 in position 61: illegal multibyte sequence
ってやつだな。
DockerのLinux環境で動くソースだからutf-8が前提と思われるところ、WindowsのShift-JISではエラーになるってことかな。
そこでググって
ーーーーーーーーーーーーーーーーーーーーーー
WindowsでCP932(Shift-JIS)エンコード以外のファイルを開くのに苦労した話
https://qiita.com/Yuu94/items/9ffdfcb2c26d6b33792e
ーーーーーーーーーーーーーーーーーーーーーー
を参考に、ファイルをオープンしているところに
「,encoding="utf-8_sig"」
を追加。
動いた!(^o^)/ しかし、文章を覚えさせるほうでも同じ原因のエラーが(^^;。そこも修正。
本では、チャットボットのソースを解析しながらの説明(import、fromと__init__.py、ユーザー定義関数、while/continue/break文、オブジェクト指向、ファイル入出力、形態素解析、乱数、辞書型/タプル型、文字列操作、マルコフ連鎖等)が続きます。
この本のAmazonの書評はかんばしくありません。ソースをダウンロードして眺めるだけの本、という評もあります。
確かに、本を読んで書けるようになるための説明というよりは、チャットボットの仕組みをどんな風に実現しているか、という内容だと思います。でも、初心者向けのごまかし説明ではなく、けっこう真正面から説明していて、会話タイプの人工知能への最初のアプローチとしては、なかなかの本ではないかと思います。
少なくとも僕は、今はわからないところもあるけれど、後日、戻ってきて読み返したい、という気持ちになりました。
さて、明日は Django です。
コメントする