ちこり学習日記 7日目

前回の振り返り

前回は以下のことをしました。

実践力を身につける Pythonの教科書 に取り組む(Chapter 2-5 制御構文(1) 条件分岐について まで)

少し日にちが開いてしまいました...


今日の取り組み

Chapter 2-6 制御構文(2) 繰り返しについて から。
まずはwhile文です。

energy = 3
while energy > 0:
    print("+ 走る")
    print("energy=", energy)
    energy -= 1;    # エネルギーを1消費


energyが0になるまでループをするプログラムです。
while文もif文同様にelse以降を省略することが出来ます。

while文という事はプログラムの内容によっては無限ループになってしまう可能性もあります。
例えば以下のようなプログラムだと

# 坪数を調べるプログラム
while True:
    tubo = int(input("坪数は?->"))
    m2 = tubo * 3.31
    s = "{0}坪は{1}平方メートルです。".format(tubo, m2)
    print(s)


無限ループに入ってしまいました。
「あ」とか「20.2」とか整数以外の数を入れればエラーになって終了しますが、これではよろしくありません。
一応Ctrl+Cを押すことでもプログラムを強制終了させることは出来ますが...
そういう時はbreak文を入れてあげれば...

# 坪数を調べるプログラム
while True:
    user = input("坪数は?->")
    # 入力が空の場合かqの時はbreak文でループを抜ける
    if user == "" or user =="q":    break
    tubo = int(user)    # 整数に変換するのを忘れずに
    m2 = tubo * 3.31
    s = "{0}坪は{1}平方メートルです。".format(tubo, m2)
    print(s)


ちゃんとできました。

次はfor文です。
Pythonのfor文はC++と書き方が違うので戸惑っているので、少し丁寧に学習していきたいと思います。
まずは一番シンプルなものから。

for i in range(5):
    print(i)


5回繰り返し処理をするプログラムです。
それはともかくrange()関数の使い方が良く分からない。困りました。

range()関数の使い方
(1) range( 回数 ) (2) range( 開始値, 終了値 ) (3) range( 開始値, 終了値, ステップ値 ) クジラ飛行机『実践力を身につける Pythonの教科書』 74ページ(マイナビ出版・2016年)

本にちゃんとまとまっていました。ありがてえ~!
1から5までを順に足して結果を表示するプログラムで試してみます。

v = 0
for i in range(1, 6):
    v = v + i
    print(i, "を足すと", v)
print("1から5を足すと", v)


できました。
Pythonは字下げが重要なので、print("1から5を足すと", v)の字下げを消してあげないとfor文として扱われてしまい、毎回出力してしまうので注意が必要かな。

break文は軽く触ったので、最後はcontinue文です。

for i in range(5):
    print("i=", i)
    # iが3以上の時はcontinue
    if i >= 3 : continue
    print("Hello!")


iが3以上の時はcontinue文でprint文を表示しないようにします。なんか上手に説明ができない...。
あまり使わない(気がするので)理解が足りないんだなこれは。
Chapter2が終わってキリがいいので今日のPythonはここまで。

ちこり学習日記 6日目

前回の振り返り

前回は以下のことをしました。

実践力を身につける Pythonの教科書 に取り組む(Chapter 2-3 文字列について まで)


今日の取り組み

Chapter 2-4 ユーザーから入力を得る方法 から。
出力があるなら入力もあります。さっくりとやっていきましょう。

# 名前を入力
name = input("名前を入力してください-> ")
# 名前を表示
print(name + "さん、こんにちは。")


無事に出来ました。

次は数値を入力してみます。

# 変換の元となる値
per_inch = 2.54
# ユーザーから入力を得る
inch = input("inch?->")
#計算
cm = inch * per_inch
# 出力
desc = "{0}inch = {1}cm".format(inch, cm)
print(desc)


TypeError: can't multiply sequence by non-int of type 'float'というエラーが出て来てしまいました。
上手く訳せないのですが掛け算が出来ないよって感じでしょうか...
本にはこう書いてあります。

ユーザーから入力されたデータは、文字列型であって、数値の型に対してかけ算を行うことはできないのです。
クジラ飛行机『実践力を身につける Pythonの教科書』 51ページ(マイナビ出版・2016年)

なるほど!入力したデータをfloat型にしてあげないといけない訳ですね。
ということで型変換してみましょう。

# 変換の元となる値
per_inch = 2.54
# ユーザーから入力を得る
user = input("inch?->")
# float型に変換
inch = float(user)
#計算
cm = inch * per_inch
# 出力
desc = "{0}inch = {1}cm".format(inch, cm)
print(desc)


無事に出来ました。
文字列に変換したい時はstr()、整数に変換したい時はint()、浮動小数点数に変換したい時はfloat() を使えばいいんですね。楽ちん。

PythonC++とかJavaのように「int i」のような書き方をしないので、この変数はどんな型?となることがあります。
変数の型を調べるtype()関数が用意されているそうです。これで調べれば安心。
REPLで試してみます。

ちゃんと出来ました。


Chapter2-5 制御構文(1)条件分岐について に入ります。if文です。
if文を使うにあたって比較演算子が出てきます。以下のリンクに説明が載っているので比較演算子ってなんぞや?って方は見てみてください。

比較演算子 - 条件分岐 - Python入門

ユーザーが数値を入力して、偶数か奇数か判断する簡単なプログラムを作ってみます。

num = int(input("数字は?->"))

if (num % 2 == 0):
    print("偶数です")
else:
    print("奇数です")


この場合、0は偶数です。
PythonC++のように中括弧で括らないのでどうにも慣れません... あと「:」をよく付け忘れてエラーを起こします。

次はbool型と倫理演算について。
bool型とは真(True)と偽(False)の2つだけの値を持つ型です。
倫理演算とは「and」とか「or」とかそういうやつです(説明が雑...)
実行例を見た方が早いと思います。試してみましょう。

and演算はこんな感じ。aとbがどちらとも真ならTrueを返します。それ以外はFalseを返します。

or演算はこんな感じ。aかbどちらかが真ならTrueを返します。それ以外はFalseを返します。
f:id:rosachico:20180617172751p:plain notは演算はこんな感じ。aが真ならFalseを返し、偽ならTrueを返します。

次は「elif」です。他の言語で言うと「else if」です。
「elif」って、「了解」を「り」みたいに短くしなくても... と最初はアレルギー反応を起こしましたが最近は落ち着いてきました。
ユーザーが西暦を入力し、その年はうるう年かどうかの判定プログラムで試してみます。

# 西暦の入力と判定
year = int(input("西暦を入力してください。->"))
uru = False
if(year % 400 == 0):
    uru = True
elif(year % 100 == 0):
    uru = False
elif(year % 4 == 0):
    uru = True
else:
    uru = False

# 結果を表示
if uru:
    print("{0}年はうるう年です。".format(year))
else:
    print("{0}年はうるう年ではありません。".format(year))


無事に出来ました。

if文で真の時は処理をしないで偽の時だけ処理をしたい!といった時に使えそうなpass文というものがPythonにはあるみたいです。
少し試してみます。

n = 3
if(n == 2):
    pass
else:
    print(n)


「else」の時の出力処理が出来ているのが分かります。すごいなpass文。C++とかにもあるのかな?
キリがいいので今日のPythonはここまで。

ちこり学習日記 5日目

前回の振り返り

前回は以下のことをしました。

実践力を身につける Pythonの教科書 に取り組む(Chapter 2-3 文字列について の 三重引用符の利用まで)


今日の取り組み

Chapter 2-3 文字列について の 文字列同士の連結から。
文字列と文字列は「+」演算子を用いて結合することが出来ます。
例えば文字列を別々の変数に入れておいて、出力の際に「+」演算子を使う事で結合して出力が出来るわけですね。
試してみます。

# 変数に入れた文字列同士を結合する
s1 = "Hello "
s2 = "World!"
s3 = s1 + s2
print(s3)


結合されて出力されました。

次は文字列に値を埋め込んでみます。

# 数字と文字列を結合する
money = 100
print("私は" + money + "円持っています")


上記のプログラムだとTypeError: must be str, not intというエラーが出てしまいました。英語だ!!
エラー文を日本語にしてみると型のエラー: strでなければならない、intではないといった感じでしょうか。
数値(intやfloat)と文字列(str)は連結出来ないんですね。じゃあ文字列に変換してあげましょう。

# 数字と文字列を結合する
money_i = 100   # これはint型
money = str(money_i)    # int型からstrに変換

print("私は" + money + "円持っています")


無事に連結することが出来ました。

文字列に値を埋め込むのにはformat() メソッドを使う方法もあり、format() メソッドを使用した方が簡潔にプログラムを記述出来るとのこと。
こちらも試してみます。

per_inch = 2.54
inch = 24
# インチをセンチメートルに変換
cm = inch * per_inch
moji = "{0}インチ = {1}インチ".format(inch, cm)
print(moji)


こっちの方がやりやすいというか、馴染みがあるかも。
format() メソッドは名前付き引数というものも使えるようです。引数は分かるけど名前付きとはなんぞや... 後に扱ってくれるようなので今は無視します。

print("私は{name}です。".format(name="チコ"))


この場合、変数(name)にある文字列(チコ)を当てはめて出力してくれるということですね。便利そう。
短いですがキリがいいので今回はここまで。


話は変わりますが、Switchでヒューマン・リソース・マシーンを購入しました。
プログラム初心者のあなたもご安心を。とSwitchの公式ページには書いてありますが、ガチガチのプログラミングです。あと知識が必要なところ多数。(XORとか)
まだYear16なんですが最低限の命令文しかないっぽくて(掛け算とかないよ!足し算と引き算しかないよ!)ヒィヒィ言っています。
アルゴリズムが苦手と自分では思っているのですが、これで少しはアルゴリズムが鍛えられる...かな?
そしてこのゲーム、音楽が良いのですがなんと公式サイトでサントラが無料配布されています。嬉しい。作業している時に持ってこい。そりゃプログラミングしてるんだから作業向きな曲なのでは...?
Tomorrow Corporation : Human Resource Machine Soundtrack
mp3とFLACの2種類があります。SoundCloudでも聴ける。
またそのうちヒューマン・リソース・マシーンについては記事を書きたいと思います。

ちこり学習日記 5日目

前回の振り返り

前回は以下のことをしました。

実践力を身につける Pythonの教科書 に取り組む(Chapter 2-2 変数について まで)
シグマ基本問題集 英文法 を解く(1.文 の4番まで)


今日の取り組み

Chapter 2-3 文字列について に入ります。
前回も少し書きましたが、Python3で文字列の表記をする時には「"」か「'」で括ってあげます。

# シングルクォーテーションの場合
print('Hello World!')
# ダブルクォーテーションの場合
print("Hello World!")


出力結果はどちらも一緒です。
前回、「'」と「"」どちらで記述してあげた方がいいのか?という疑問が自分の中に出てきましたが、用途によって使い分けるといった感じでした。
例えば...

# シングルクォーテーションを文字列で使いたい場合
print("I'm Chico.")
# ダブルクォーテーションを文字列で使いたい場合
print('"Oh,no!"')


このように使い分けることが出来ます。
しかし、文字列の中にシングルクォーテーションとダブルクォーテーションが混在している時はどうしたらいいのでしょうか?
そういう時はエスケープシーケンスを使用します。エスケープシーケンスって何ぞや?ほら、「\n」こういうやつ。
もちろん「\n」だけではなく色々なエスケープシーケンスがあります。
本にもエスケープシーケンスはいくつか書かれているのですが、書かれていないのもあるので以下のサイトを見た方が早いです。
丁寧にまとめられていて私のような初心者にはとてもありがたいです...
エスケープシーケンス - 文字列 - Python入門
今回はシングルクォーテーションとダブルクォーテーションの話をしているので、その2つのエスケープシーケンスを使ってみます。

しっかり機能してくれました。今回はREPLでやったから見にくくてごめんね...

次は三重引用符を利用します。けど三重引用符ってなんだ。

複数行にわたって文字列を記述したい場合に、三重引用符を使うことができます。
三重引用符とは、ダブルクォート(あるいは、シングルクォート)を3つ連続で記述したものです。
クジラ飛行机『実践力を身につける Pythonの教科書』 44ページ(マイナビ出版・2016年)

記述の仕方は分かりましたが、どう使えばいいのかは分からないので試してみます。

str = """
るんるんるん
がおがおー
ぼぼー
どーん
"""

print(str)


見やすい!!
しかし文字列の前後に空行が入っています。なんで?

str = """\n
るんるんるん
がおがおー
ぼぼー
どーん\n
"""

print(str)

それは1行目と文字列の末尾に改行が入ってしまっているから。見やすいように「\n」を記述してみました。そういえば改行してたね。
空行をなくす為に「\」という改行を無視するエスケープシーケンスがあるので使ってみます。そういえばさっきのリンク先「\」の説明なかったかな...?今書いたしいいよね

エスケープシーケンスすごーい!空行をなくすことが出来ました。
少し短めですが今日のPythonはここまで。


紀伊国屋書店に行ったら、ド定番の Essential Grammar in Use があり購入してみました。
実はこの本10年くらい前に少し触れたことがあるのですが、豊富なイラストに問題ととても親切でそこが購入の決め手でした。
まあ当時はイヤイヤ英語を勉強していて全然やらなかったのですが。もったいないことしたよお前...
シグマ基本問題集 英文法はしばらく寝かせておこうと思います。

ちこり学習日記 4日目

前回の振り返り

前回は以下のことをしました。

実践力を身につける Pythonの教科書 に取り組む(Pythonのインストール、REPLに触る)
シグマ基本問題集 英文法 を解く(1.文 の2番まで)

昨日は作業をしていた故、勉強の時間が取れませんでした...


今日の取り組み

Chapter 2-1 電卓より便利なPython(本の方は誤字が...) に入ります。
最初は前回の復習です。

コマンドラインを起動してpython3 と入力すればREPLが始まるんでしたね。
本に書いてある問題をサクっとコンピュータに計算をさせます。


「//」は小数点以下を切り捨てて割り算をしてくれるんですね。
流石コンピュータ、割り算の余りを求めたりべき乗の計算も人間と違ってバッチリです。

次はスクリプトから計算を行わせてみます。

30 + 5

計算するプログラムです。

...何回やっても結果がコンソール上に表示されませんね。
それもそのはず、画面に表示をする関数であるprint()関数を使用していないから。
print()関数を使用して結果をコンソール上に表示してあげましょう。

ちゃんとコンソール上に表示されました。

次にコメント。pythonだと「#」を記述することでコメント扱いになるんですね。
少しC++も使っているので、癖でincludeと入力しそうになります笑

#print(1)
#print(2)
#print(3)
print(4)
print(5)


最初の3行のprint()関数はコメント扱いになっているので、実行されていないのが分かります。


Chapter 2-2 変数について に入ります。
Pythonにももちろん変数があります。使えるのは以下の通り。

アルファベット
数字(但し、2文字目以降)
アンダースコア
日本語(漢字、ひらがな、カタカナ)
ギリシャ文字

...日本語とギリシャ文字?マジで?
とりあえず試してみます。

本当でした。ライフアップβ思い切り回復量間違えました...
けど使う場面はそうそうないのでは...

変数名は、アルファベットの大文字と小文字を別のものとして扱います。
クジラ飛行机『実践力を身につける Pythonの教科書』 35ページ(マイナビ出版・2016年)

...マジで?
とりあえず試してみます。

本当でした。
けど少し紛らわしくないか。

変数名に予約語(if、forとか)は使えない。そうですね。まあこれはほとんどがそうじゃないでしょうか。

print()関数の話に戻ります。
任意の文字列を出力するには「'」か「"」で文字列を括ってあげます。
「'」と「"」どちらで記述してあげた方がいいのでしょうか?本を見てみたら使用例が載っていたのでそれは次回にでも。
話を戻して、任意の文字列を表示してみます。

# 文字列の表示
print("がおがおー")
print("これも策のうちだよ")


ちゃんと表示されました。
「,」で値を区切ると複数の値を表示することが出来るので、それもやってみましょう。

# 数値に年齢を加えて表示
nenrei = 20
print("私は", nenrei, "歳です。")


ちゃんと表示されました。

print()を実行すると、必ず改行してしまいますが、以下のように「print(..., end="")」と書くと改行しないで続けて表示します。
クジラ飛行机『実践力を身につける Pythonの教科書』 39ページ(マイナビ出版・2016年)

へー!やってみましょう。

# print()で改行しない
print("これも", end="")
print("策のうち", end="")
print("だよ", end="")


すごーい!
キリがいいので今日のPythonはここまでです。


シグマ基本問題集 英文法 は1.文 の4番までやったのですが何が何だかさっぱりです。英語が壊滅的に出来ない私には最初の最初でも難しい...
問題集間違えたかな...

beatmania IIDXのCRT筐体はどこに生きているのか

ふと弐寺のCRT(ブラウン管)筐体って全然見なくなったな~って思ったのでまとめてみました。
参考になれば幸い。
beatmania IIDX ゲームセンターマップ 様の情報をお借りしています)
(情報は2018年2月13日のものですのでなくなっている可能性も有)

続きを読む

ちこり学習日記 3日目


昨日の振り返り

昨日は以下のことをしました。

実践力を身につける Pythonの教科書 に取り組む(Pythonのインストール、REPLに触る)

続きをします。


今日の取り組み

REPLは四則演算だけでなく、関数を利用して計算が出来るようです。
import math と入力すると使えるようです。C++でいうinclude かな。とりあえず計算してみます。

math.floor() は小数点以下を切り捨て、math.swrt() は平方根の計算が出来るようです。平方根ってなんだっけ
詳しい説明は後程出てくるようなので、色々な計算が出来るのだな、と思っておきます。


Chapter 1-4 Python開発環境について に入ります。
私が分からん!!となったところです。

PyCharmという統合開発環境があるらしいのですが、私は大規模な開発をする予定が今はないのでAtomというエディタをインストールして使うことにします。
atom.io

インストールしました。英語ですね。
英語が出来ないので下のサイトの手順に沿って日本語化します。
【すぐわかる!】Atomエディタのインストールと日本語化、便利な使い方


Atomの日本語化が終わったので、Chapter 1-5 エディタで書いたスクリプトを実行しよう に入ります。

print('Hello World!')
コンソール上にHello World! と表示するだけのプログラムです。
IDLEを立ち上げて実行してみます。

動きました。
IDLEを立ち上げファイルを読み込んだ時に新たにウィンドウが出てきて(左側)なにこれ、となったのですが、テキストエディタみたいなやつなのかな?
python 3.6.5 Shell と書いてある方がコマンドプロンプトみたいなものなのかな?

コマンドラインからもプログラムを実行してみます。

動きました。cdコマンドとかピー年ぶりに使いました。

ちなみに、Windowsエクスプローラー上から、PowerShell上に、ファイルやフォルダをドラッグ&ドロップすると、そのファイルのパスがPowerShell上に表示されます。
任意のディレクトリ上で作業をしたい思ったら、PowerShell上で「cd」と入力し、それに続いて、エクスプローラー上のフォルダをドロップすると便利です。
クジラ飛行机『実践力を身につける Pythonの教科書』 24ページ(マイナビ出版・2016年)

へー!今度やってみます。


Chapter1が全て終了したので、今日のPythonはここまで。



英語の方はシグマ基本問題集 英文法をやり始めました。まだ1.文 の2番までですが...
昨日の書籍にすっかり書き忘れてしまったのですが、総合英語Evergreenも駆使しながら頑張っています。

ちこり学習日記 2日目


昨日の振り返り

昨日は以下の予定を立てました。

実践力を身につける Pythonの教科書 に取り組む
シグマ基本問題集 英文法 に取り組む
自分の特徴や行動をメモし分析

早速今日から取り組んでみます。


今日の取り組み

まず優先順位が高いPythonに取り組んでみました。
Chapter 1-1 プログラミングやPythonについて から読み進めていきます。

プログラミングによって仕事を自動化できる
論理思考力(ロジカルシンキング)を培うことができる
問題解決のためのスキルを向上させることができる
クジラ飛行机『実践力を身につける Pythonの教科書』 3ページ(マイナビ出版・2016年)

プログラミングを学ぶメリットの再確認。
2つ目と3つ目が特に大事だと思います。


本書を楽しく読み進めるヒントを紹介します。というのも、プログラミングの入門者が陥りやすい罠があるのです。
それは「100%理解しないと次に進めない症候群」です。
これは、最初から解説やサンプルプログラムのすべてを理解しようとして、熱心に本を読んでいく人に多いのですが、そのつど、すべてを理解しようとするため、何度も同じ所を繰り返し読んで、なかなか先に進めなくて、イライラするという状況が連続します。
最後には、本を読むのをやめるだけではなく、プログラミングが嫌いになってしまいます。
クジラ飛行机『実践力を身につける Pythonの教科書』 5ページ(マイナビ出版・2016年)

私だーーー!!!
いきなり痛いところを突かれました。けど100%理解する必要がないよ、って書いてあると救われますね。メンタル的に 笑


Chapter 1-2 Pythonのインストール に入ります。
一応Anacondaをインストールしていたのですが、良く分からないままインストールしたものなので改めて入れ直します。

Add Python 3.6 to PATHにチェックを入れるのは分かったのですが、何故チェックを入れるのでしょうか?本は理由に触れていないのでさっぱりです。
公式ドキュメントを見てみました。コマンドプロンプトからなんか色々出来る様になるみたいですね。(よくわかってない)
とりあえず画像のように設定してインストールをします。そういえば、私の使用しているPCは64bitなのだがインストーラは32bitで大丈夫なんだろうか。

なんだこれ(英語が読めない)
Disable path length limitをGoogle翻訳に突っ込んでみたらパス長制限を無効にすると出てきました。
Windowsのパス長さが260文字制限のようなので、それを解除するためのオプションかなんかって感じでしょうか。とりあえず長くなる予定はないので今回はパスです。

無事にインストールが完了しました。
これで終わり!と思いきやpython3コマンドを有効にする、と書いてあります。

Mac OS X版をインストールすると、「python3」というコマンドが使えるようになるのですが、Windows版では「python」コマンドが使える様になります。
Pythonには、2系と3系の両方があり、できれば区別して使いたいものです。
クジラ飛行机『実践力を身につける Pythonの教科書』 8ページ(マイナビ出版・2016年)

なるほどね。
では、python3コマンドを有効にするためにpython.exeをpython3.exeにリネームします。
終了です。すごいあっさりなんだけど、本当にこれで大丈夫なのだろうか...。


Chapter 1-3 Pythonの対話モードについて に入ります。
ですが私は対話モード?REPL?なんぞや?です。(知識なさすぎとか言わないで...)

REPLとは、英語のRead-Eval-Print-Loopの頭文字を取ったものです。
入力を読んで(Read)、評価して(Eval)、結果を表示(Print)することを繰り返し実行する(Loop)という意味です。
クジラ飛行机『実践力を身につける Pythonの教科書』 12ページ(マイナビ出版・2016年)

これを利用すると、1行プログラムを入力するごとに、その結果を見ることができるので、プログラムの学習や、Pythonの動作を確認するのに、とても都合が良いのです。
クジラ飛行机『実践力を身につける Pythonの教科書』 12ページ(マイナビ出版・2016年)

分かるけど分からない。しっくりこないというか。
こういう時はとりあえず試してみましょう。
ファイル名を指定して実行で cmd と入力してコマンドプロンプトを呼び出し、python3と入力します。

REPLが始まりました!なんかこれだけで感動。
>>>が表示されている時は、Pythonに指示を与えることができるみたいです。
とりあえず計算をさせてみます。

しっかり計算してくれました!
割り算だけ割り切れる数でも実数で返してくるんですね。少し不思議。
それより1行プログラムを入力してすぐに結果を返してくれるの気持ちいいですね。


REPLを試してキリがいいので今日はここまで。
メモがてらにブログを書いていたせいか思ったより時間を食ってしまい、英語を勉強する時間がなくなってしまいました。

という英雄召喚イベントが今日から始まったのですが、
シグルド様!冬ルフレ!正月アクア!正月タクミ様!と、欲しい子が一気に来てしまいました...
オーブは70個ちょっとしかなくてさあどうなるという感じだったのですが、
今回も来てくれちゃいました。

続きを読む