とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub
スポンサードリンク

WindowsでPython その5(while文)

ペースダウン


今日で5日連続更新です。
ハイペースの更新に反比例して、勉強時間の質が20分、10分、5分と、落ちてきました。
とりあえず1センテンス頑張ればいいかなと。。。読者の方も(いるのか?)あんまり頑張りなさんな。
人生長いんだよ。

処理を繰り返す制御構文


昨日に続き、今日も制御構文のお話です。
前回はifで条件分岐したけど、今回は「何か」を繰り返す処理です。
一般的には「ループ」って言います。

「だんだんPythonじゃなくてプログラムそのものの話をダラダラ言うようになってきたね?」
というツッコミがきそうです。

うん。そうなんだ。

制御構文打つ時に、いちいち調べるんじゃなくて、ソラで打てるようになるために、自分で反復練習してるんですよ。
それに付き合いきれないとか言わないで、一緒に繰り返そうぜ

今日参考にしたサイトはもちろん、日本語Pythonホームページです。
8.2. while 文¶(原文)

whileで「君がッ泣くまで殴るのをやめないッ!」プログラム


繰り返し処理といっても、forとかwhileとか、いろんな書き方(日常会話)があります。
今日はwhileを使って、「君がッ泣くまで殴るのをやめないッ!」を表現してみます。

うりゃ

WindowsでPython その5(while文)

Pythonでは、制御構文のうしろに「:」をとにかく付けて改行します。
この表記はCとかVBやってる人はなかなか身につかないんじゃないかな?

有名どころの書き方だと、こんな感じで
だいたいは制御構文は「{}」を使うからね。
while ( bool ) {
//なんか処理
}

while のあとにある、インデント(字下げ)されたブロック全部が、繰り返し実行する処理となります。
「else:」って書いた後のインデントブロックが、繰り返し処理を抜けた後の処理になります。

while の後の()に書いている条件に合致するまで、永遠にループします。
今回の例だと、入力で yes じゃなければ( != )ずっと殴るって書いてます。

F5で実行

WindowsでPython その5(while文)

yesって入れたらループが終了して「else:」の後が呼び出されるけど、
それ以外ならずっと殴られてることが確認できました。

別の書き方


while だけ取っても、いろんな書き方ができます。
色々書き方あるけど、これがオススメってあるの?って思うでしょ?
これもガイドラインに従うべきなんだろうけど、読んでないし、決まってるかもしらない。

このように書いても、同じ動きになります。

WindowsでPython その5(while文)

WindowsでPython その5(while文)

while (True): って書いてます。
これは「条件なんかねえ、常に合致するんだ」って意味なので、永遠にループします。
それを避けるために、ループの中で if 文を書いて、
もし yes って言われたらループを終わらせる命令「break」と書いてます。
if文を一行で書く小技も入ってますね。(個人的には見にくいので使いたくない)

とにかくいろんな書き方ができるし、好みもあるけど、少なくとも自分の書くコードは統一しときましょう。
あ、私はどうかって?そもそもwhileをそんなに使いません・・・極力別のループ制御文を使います。

While は、続ける条件をプログラムミスすると永遠にループします。
これを「無限ループ」といい、まぁ、、プログラムのフリーズに繋がったり、処理が終わらない問題がでたりするので
他のループ文をできるだけ使うようにしています。

最後に


いかがでしたでしょうか。
ブログタイトル変更や、方針すぐかえる朝令暮改な感じ。
さらに、日に日にコンテンツが短くなっていくことは保証します!

とはいえ、このシリーズはコピペしてどうにかする事を目的にしてるんでなくて、
ド素人の私がPythonを使ってデスクトップを作れるようになるまで頑張るシリーズなので
なのでソースをテキストで貼り付けてなくて、全部画像なのです。(めんどういだけ)

というわけで不幸にもこのシリーズを読み進めてしまったら、自分で手を動かしてコード組んでくださいね。

それが一番、Pythonの基礎を体に叩き込む行動だと思います。

ではまた!!

WindowsでPython その4(if文)

ブログタイトル変更しました


昨日まで「Pythonでデスクトップアプリを作るまで頑張る」というタイトルだったのですが、
タイトルが丸かぶりしていたブログさんがあったので変更しました。

制御構文ってなに


職業プログラマをしていると必ず聞かれる質問

「言語は何ができますか?」

これね、定義が分からんのですよ。

「いくら時間がかかっても、組むことができる」が「できる」の条件なんだったら、
0から勉強時間を費やせば、誰にでもそれなりにはできるようになると思うんですよ。

私が考える「できる」の条件は次の2点で、

1.その言語の得意不得意分野と、困った時に調べる場所(マニュアルとか、WEBサイトとか)をある程度知っていること。
2.制御構文を調べずにソラで打てること。

2について言及すると、自然言語でいう日常会話。
これがプログラムにおける「制御構文」です。

いわば文法とか、言い回しはともかく言いたい事を伝える技術です。
これができなければ「できる」とは言えない。
今日はそんな制御構文の一つ「条件分岐」の「if」をやります。

「条件分岐」の「if」



さて、if文っていうのは、○がこうだったら、▲をする。そうじゃなかったら□をする。
という条件によって処理を分岐する命令です。

とりあえず偶数か奇数かを判断するif文を書いてみます。
これまでやってきたとおり、拡張子がpyのファイルを作って、Pythonのエディタを開く。

WindowsでPython その4(if文)

ユーザーに数値を入力してもらって、それが何かを出力するプログラムです。

ifは、Pythonでは

if (なんか条件) :
    やりたいこと1
    やりたいこと2
else (なんか条件じゃなかった時) :
    やりたいこと3
    やりたいこと4

って書くのがお作法(文法)です。
「やりたいこと」として、字下げ(インデント)が揃ってる部分が、一つのかたまりとしてみなされます。

プログラムを書いたはいいけど、どうやって実行するん?


さてさて、Python標準のプログラムエディタですが、コマンドラインからファイル名を打ち込んでもいいけど
どうやらRunというところで実行できるらしい。

WindowsでPython その4(if文)

F5って書いてるのはショートカットで、書いたプログラムを即時実行したい時はF5を押してね。

なんか出た。

WindowsでPython その4(if文)

実行できたので、1と入力・・・
ちゃんと「奇数です」って表示されてるし、2を入力すると「偶数です」って出ました。

WindowsでPython その4(if文)

数値以外を打ち込んで見る


例外処理について見てみます。
 ※例外とは、想定外のプログラム実行のこと

"a"って入力してみました。
すると・・・・

WindowsでPython その4(if文)

なんかエラー出た。

エラーっぽい言葉を探すと、ValueErrorって出てます。
直訳すると「値エラー」ですね。
line 3 って出てるので3行目がエラー出たよって教えてくれてます。親切です。

コードの見直し


さて、コードの3行目を見てみる。

WindowsでPython その4(if文)

どうやら
intInput = int(strInput)
ってところがおかしいらしい。

int()は、文字列の数字を数値に直す関数なので、そりゃ、プログラムからしたら"数字"が指定されると思ってるんだから
想定外ということでエラーになるわ。

ってことで、対処する。

対処方法は色々あるけど、今回は想定外を対処する「例外処理」を使ってみる

例外処理



Pythonの日本語マニュアル
例外を処理する
を見てみました。

try構文(これも文法だよ!)を使えば、なんとかできるみたいなので書き直す。

WindowsでPython その4(if文)

int()にするときに、想定外だった場合どうするかってのを書く。
とりあえず文句言って、プログラム終了させるコードにします。
エラー内容が「ValueError」なので、except の後ろにそのエラーを指定しています。
よって「ValueError」以外の予期していないことが起きれば、やっぱりエラーメッセージはでてきますよ。

sys.exit()ってかいてるのはまたいつか書きますが、これがその場でプログラム終了させる命令です。

んで実行。

WindowsでPython その4(if文)

よし、お目当ての動きができた。

今日思ったこと


基本的な構文が全然わかってないので、if文やtryそして、sys.exit()するのに調べるのが必要だったので
めちゃくちゃ時間かかった・・・
これは「できる」とはいえないね。

ってわけで、しばらくは条件分岐や文法について記載していきます。

ではまた!

WindowsでPython その3(文字列について学ぶ)

Pythonの学習 3限目


とうとう来た。3日連続の更新。(3時間程度だが・・・)
ブログを開設して8年目。初めてではないか。

とはいえさっきまでX-MENアポカリプスを見てたので、非常にやる気がない。
ほらね、さっそくですよ。

そんなやる気の無さの中、今日はレベルアップする気はない。
どんなプログラム言語にも必須の"文字列"について、Pythonではどうか?
確認する程度の気持ちです。

とはいえ文字列の扱いは非常に大切で、どんなプログラム言語でも「何か」を表示する時には必ず文字を使う。
文字列はだいたい。"aaaa" こんな感じでダブルクオーテーションで括る事で表現できる。

しかし!それだけ覚えていれば最低限。
文字列を表現する方法はいくつもあり、これを知っているか否かで、コーディングのストレスが全然違う。
プログラムを少しカジッた人ならなんとなく分かるはず。

というわけで、今日は文字列の表現方法についてテキトーに確認していくぞ。

Pythonにおける文字列の表現


どんなプログラムも、だいたいは「"aaaa"」ダブルクオーテーションで括るか
「'aaaa'」シングルクォーテーションでくくるかすると、文字として認識される。

PythonはどっちでもOK!

20170527_001.png

"aaaaa" OK
'aaaaa' OK

文字列の中でそれぞれのクオーテーションを表現したい場合は

シングルクォーテーションでくくってる場合は ' ' の中に 「"」を打てばいいし、
ダブルクォーテーションでくくってる場合は " " の中に 「'」を打てばいい。

でも混在させるとコードがきちゃなくなるので、どっちかに決め打ちしておくのが吉。

私はC#を使ってるので、基本的には""で括ろうと思う。

本来はそのプログラム言語の一般的なコーディング規約に従うべきであるが、まだそんなのは見ていない。
よってこのブログをみた人からの指摘待ちです。

""の中でも"を表現したい場合は、エスケープシーケンス「\」を使う。

文字列中に「\」を使うと、""で括ってる中で"を表現できる。

文字列中で表現できる特殊な文字色々


改行
文字列中に改行したい場合は、「\r\n」と打つ。
これはお決まりだし、特に深く考えること無いです。お決まりの言葉。
\r\n (えんあーるえんえぬ)と打てばいい。OSがWindowsの場合ね。

Linuxの場合は\n だけでいいです。
20170527_002.png

三重引用符(\r\nを使わない改行)
文字を三重引用符、ダブルクオーテーションを3つ繋げたもので括る。

""" こんなん """

これは、C#で例えると @"こんなん" と同じです。

文字は""で括るけど、エンター押して改行を入力するとエラーになります。
エンター押して改行入れると、それがそのまま認識されるのが三重引用符。

20170527_003.png

20170527_004.png

三重引用符で括って改行するのをさらに無視したい場合は、
エスケープシーケンス「\」を打って改行する。
そうすることで、改行が無かった事になる。

エスケープシーケンス
ちなみにエスケープシーケンスって何?ということだけど、
これは、「その文字を無視する言葉、または、特殊な文字」程度に考えればOK
考えるな、感じるんだ!

画像にある「バックスラッシュは・・・」のくだりは、エスケープシーケンスのつもりで打った文字「バックスラッシュ」が「\」と間違えただけです。

変数使ってたらバグった



次に、変数に文字を突っ込んで、画面に表示させようとしてたらエラーが発生した。

Pythonでは、文字と文字を合体させて、一つの文字にしたい場合は文字列同士を「+」でつなぐ。
そしてPythonにはstr()っていう関数がある。これは文字ではなく、数値を文字列に変換する命令です。

例えば 「お会計は500円です」
と表示させたくて

"お会計は" + 500 + "円です"

って書くとエラーになる。

500は文字じゃなくて、数値だからね。

正しくは"お会計は" + "500" + "円です" ってやらんとダメ。

str(500) って書くのと、 "500"って書くのとは同じです。

で、画像のようにstr に文字列を突っ込んで、strを使おうとしたらエラーになった。

strという命令が、変数になったんだね。エラーにしてくれよ・・・

というわけで、変数の削除は del を使って消してみたらちゃんと動いた。

これは罠になるでー!

20170527_005.png

文字列の練習おしまい


他にも色々文字の表現はあるんだけど、多分書いたものぐらいしか使わんだろう。
全部覚える必要はないです。
自分ルールがあればいいのだ。

ちょっとだけプログラミングぽいこと



さて、文字列はだいたいわかった。(何か一つプログラムしてる人向けなので十分だと思ってます・・・)

最後に、ユーザーから入力を受け取って、その入力を使うコードを書いてみる。
うりゃ。

input関数

コマンドラインじゃなく、ファイルに作りました。
input関数はユーザーの入力を受け取り、変数に保存するもの。
ちょっとだけプログラミングぽいですね。

20170527_006.png
20170527_007.png

姑息にも\r\nとか使ってみた。
これはユーザー入力を受け取り、それを変数に入れて画面に出してます。

今日は終わり!


1時間経ったので終わります。

でもね、しょうもない内容と思うかもしれないけど、文字列操作って本当に大事なんだ。
いくつかの表現方法を知ってるだけで全然レベルの違うコードが書けるんだよ。ほんとだよ。
今日、Pythonにおける文字列表現を学んだ事で、きっといつか役に立つはず・・・そう信じたい。

デスクトップアプリ作るならなおさら、そう思いたい。

そろそろ、予め引数を受け取ってそれをゴニョゴニョする方法を勉強したいな。。。その4か5あたりでできればと思います。

ではまた。

WindowsでPython その2(とりあえず実行)

今日も元気にPython


さて、Pythonを始めて2日目です。
珍しく2日連続の更新ですが、絶対にこのペースは続きません。きっと途中でペース落ちます。
それでもゆっくり勉強していくのがこのシリーズの趣旨!

だからといって、何もレベルアップしないのは面白くない。
というわけで、今日はpythonのプログラムファイルを作って、それを実行するところまでやりたい。

それではいってみましょう。

昨日のおさらい


コマンドラインで python3 と打ち込む。
20170526_001.png

Pythonが起動したのでとりあえず安心する。

とりあえず四則演算を試してみる


プログラムの基礎といえば、足したり引いたり。
コマンドラインで適当に四則演算を試してみます。20170526_002.png

そいや。

10/3 とか打ち込んでるのは、10割る3してねってことです。
途中で丸まった答えになってますが、きっちり答えを返してくれてますね。

Pythonのすごいところ


Pythonの素晴らしいところの一つ「ドキュメントを非常に大切にしている」ことですね。
英語なのでオエってなりますが、公式サイトはPythonの全てが学べます。(読めないけど)
https://www.python.org/

有志の方々がこれを日本語にしてくれていて
日本語のドキュメントもみっちり書かれてます。
https://www.python.jp/
正直、こんなブログを見なくても、オープンソースに慣れている人は日本語ドキュメントを順番に読めばいいと思います。

対話実行モードについて


さて、これまでコマンドラインで四則演算を打ち込んだりして、結果を確認してました。
これを「対話型モード」と言います。
コンピューターと対話して答えを返してくれる。
そんな感じ。
電卓より便利じゃないかな?

これも日本語ドキュメントの
3.1. Python を電卓として使う
をそのままやってみただけです。

今日の目標は「対話型モード」じゃなくて、プログラムファイルを実行すること!
いちいちコンピューターと対話するんじゃなくて、決められたプログラムを実行することです。
「非対話型モード」というらしいですが、やっていきましょう。

プログラムファイルの作成


対話型じゃないということは、何かしら決められたコマンドが用意されているということ。
Pythonのプログラムファイルを作ります。

20170526_003.png

Pythonのプログラムファイルは、拡張子を「py」として作ります。

pythonエディタを開く


デフォルトのインストールをしたことが幸いしたのか、拡張子「py」のファイルがPythonのファイルとして認識されてました。
ファイルを右クリックすると、「Edit with IDLE」ってメニューがありました。
これは昨日、背景を黒くしたやつ!

20170526_004.png

早速開いて、コマンドを書き込みます。

20170526_005.png

PythonはPrint(なんかかく) って書くと、画面に()内の何かを表示します。
ひとまず、このように書き込んでファイルを保存。

pyファイルを実行!


保存したファイルはすでにPythonのプログラムファイルです。
このファイルをコマンドラインから呼び出してみます。

ファイルが存在するフォルダでShiftキーを押しながら右クリックすると・・・
「コマンドウィンドウをここで開く」メニューがでるのでクリック。

20170526_0111.png

すると、最初からファイルが存在しているフォルダに移動した状態でコマンドラインウィンドウが表示されます。
便利。

で、さっき保存した「test001.py」というファイルを指定して実行する。

20170526_007.png

Print()の中に書いた内容が表示されました!
やったね。

今日の目標は達成


うん・・・すごくあっけなかった。

15分ぐらいで終わってしまった。

このシリーズ、プログラムの基礎の基も説明しないまま進めてるけど大丈夫かな?

読者対象が他のプログラム言語知ってる人だからいいや・・・
Microsoftの至れり尽くせりの環境でしかプログラムしたことない人向けだし。(言い訳)

でもやっぱりあっけなさすぎるから、「変数」ぐらいは扱っておきます。

Pythonの変数


Pythonの型定義はそんなに厳密じゃありません。
C#だと数値入れるのに「 int i 」とか書くけど、PythonはjavaScriptとか、コマンドライン寄り。

なので、対話型モードで変数を書くと色々ぶち込めます。

20170526_011.png

画面の通り

「hoge」変数に "ほげほげ"

「カップヌードルの値段」変数に128

っていれても、特に型指定することなく、print()文で表示できました。

文字とか数値とか、あんまり気にしなくていいんだね。
型が厳密でない分弊害はあるだろうけど、それはプログラム言語ごとの特徴ということで。。。

今日はここまで!


さて、今日もブログ書きを含めて1時間ぐらいやったので満足です。

この調子でいったらデスクトップアプリ作成するのはいつになるだろうか?

そもそもどんなデスクトップアプリを作ればいいんだろうか?

何にも考えてないけど、C#で手軽なアプリを作る程度に使いこなせるように少しずつやっていきます。
同じようにゆっくりトレースしたい方はこれからも応援よろしくお願いします。

読んでる人いるんかな・・・

WindowsでPython その1(インストール)

Pytonはじめます


私はVisual StudioでC#しかしてない職業プログラマなんだけど、時代に取り残されそうなのでPythonをいじってみる。
ド素人が手探りでやるので、他に詳しく書かれている方たちのようなレベルの内容ではないけど
同じく手探りでPythonをはじめようかと思う人がトレースできるような感じでブログってみます。
なおOSはWindowsを対象にします。Linuxいじったことないしね!

まずはインストーラーをダウンロード


Pythonはバージョン2と3があるらしい。
バージョン2の方がライブラリが揃っているようだけど、最新らしき3ではじめます。

ここからインストーラーをダウンロードします。
https://www.python.org/downloads/
20170525_000.png

うっへぇもう英語。吐き気がしますね。
とりあえず3.6.1をダウンロード。これが最新なんだから何も疑うな!感じるんだ!

そしてインストール


20170525_001.png
どんどんいくよ。

Install Nowをクリック。素人はデフォルトを選ぶのが最善なのさ。
OSが重くなる?
うん。Pythonがサービスとして常駐するなら、そうかもしれない。でもそうじゃないかもしれない。
何かを得るには、何かを犠牲にすしかないんだ。

インストール完了


20170525_002.png
なんかサクセスフルとか言ってる。
下にある「Disable path length limit」はなんだろ?
調べてみると・・・
OSのファイルパスは最大260文字に制限されているけど、Windows 10では限界突破できるらしい。
それをしますか?
的な感じ。Python 3.6かららしいね。
うん。いらん。
無視してClose押します。

ほんとにインストールできた証拠


<>20170525_003.png
ウィンドウズボタン押すと、最近追加されたものの一覧にPythonが出てきてる。
無事できたということだな。多分。

未来のために


20170525_004.png

とりあえず、Pythonのバージョンを3としてインストールしてみたものの、
バージョン2とも同居できるらしい。
バっというとPythonを実行したいときに「Python」ってコマンドラインで叩くと実行できるらしいんだが、
もしかしていつかバージョン2をインストールするかもしれない。
その時に「Python2」「Python3」とか指定できるように、実行ファイルの名前を変更しときます。

環境変数が通ってないよ


20170525_005.png

早速コマンドラインで「Python」と打ち込んでみたらエラーが・・・
パス通ってねえ・・・ってわけで、環境変数を通す。

初の実行


20170525_006.png
Pythonはインタプリタ言語らしいので、逐次実行が可能。
早速コマンドラインでテキトーに思いつく限りの命令叩いてみた。
いけてそうだね!

標準の開発ツールを試す


20170525_007.png
Pythonをインストールした時点で、標準の開発エディタも一緒に入るらしい。
「IDLE (Python 3.6 32-bit)」というのをメニューから叩くと起動する。
背景が白と文字が黒なので、個人的には目に悪いため背景テーマをdarkに変更しました。
やっぱり英語です。つらい。

今日はここまで


素人が手探りでやるとここまでで力尽きた。
先は長いけど、ちょっとずつ頑張ります!
次のページ

FC2Ad