書籍「退屈なことはPythonにやらせよう」を教本にした「投資家のためのプログラミング勉強会(投プロ)」第3回目です。
- 第1回 複数の株情報サイトを一度に表示してみよう
- プログラミング初めの一歩
- 変数とは?
- 第2回 指定した証券コードの関連サイトを表示する
- 文字列の結合
- print()関数でディスプレイに変数を表示する
- input()関数でキーボードから文字を変数に入力する
今日はプログラミングの超重要要素である「条件分岐」について学びます。この条件分岐と後日学習する「ループ」を理解すると、プログラミングで実現できることが一気に拡がりますので、頑張って学んでいきましょう。(書籍では第1部2章の内容となります)
なお、投プロは現在オンラインのみでの勉強会ですが、近い将来は実際の勉強会方式でも開始します。独学ではなかなかできないプログラミングの勉強を投資家仲間とワイワイできると楽しいですよね。(平日夕方以降、五反田〜恵比寿あたりの貸会議室で行う予定です)
さて、前回は指定した証券コードの関連ウェブページを一気に開くアプリを作りました。
本日は条件分岐と文字列の長さを取得する関数を使って、クリック一発ウェブページ表示アプリ 「一発クン」のバージョンアップをしていきましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import subprocess message = "証券コードを入力してね" print(message) stock_code = input() yahoo_url = "https://stocks.finance.yahoo.co.jp/stocks/chart/?code=2914.T&ct=b" kabusensor_url = "http://kabusensor.com/brand/?code=2914" buffetcode_url = "https://www.buffett-code.com/company/2914" subprocess.Popen(['open', '/Applications/Google Chrome.app', yahoo_url]) subprocess.Popen(['open', '/Applications/Google Chrome.app', kabusensor_url]) subprocess.Popen(['open', '/Applications/Google Chrome.app', buffetcode_url]) |
こちらは前回のソースコードです。
証券コードを入力すると、その関連ページを一気に表示してくれる機能でしたが、実在しない証券コード(例えば “ABS76” など)を入力すると、「ページが存在しない」というエラーがブラウザ上に表示されてしまいます。
そこで今回は、入力した値が証券コードとして有効かどうかのチェックを行う機能を追加したいと思います。
「有効な証券コードが有効かどうか」は「入力文字が4桁の文字列かどうか」で判定します。(より厳密にチェックする場合は、実在する証券コードとの付け合わせ処理が必要ですが、これは4章の「リスト」を勉強した際に実装しますのでお楽しみに)
1 2 3 4 |
if <条件>: <YESの場合の処理> else: <NOの場合の処理> |
1 2 3 |
stock_code = input() m = len(stock_code) print(m) |
上記を実行すると、キーボードから入力した文字の文字数が表示されたはずです。
stock_codeという変数にキーボードから入力した文字列がセットされて、その文字列をlen関数に入れると文字列の数が変数mにセットされます。さらにprint関数にmを渡すと、その文字数が表示されるのです。
1 |
m == 4 |
==は両側の変数が同じかどうかを判定してくれる命令です。変数に値を代入する=(イコール)とは関係ないので注意してください。==という命令だ、と覚えてください。
==の判定結果はTrueかFalseで返してくれます。(True/FalseはPythonの世界でYes/Noを表します)
では実際に判定結果を変数hanteiに入れてprint()関数で表示してみましょう。mに6を入れた場合と4を入れた場合で試してみましょう。
1 2 3 4 5 6 7 |
m = 6 hantei = m == 4 print(hantei) m = 4 hantei = m == 4 print(hantei) |
どうなりましたか?(読むだけではなく実際に手を動かして実行してみてくださいね!)
1 2 |
False True |
と表示されましたか?
=の記号が並んで表示されるので違和感があるかもしれませんが、上記の意味を押さえていれば理解できると思います。Pythonでは==の他にも下記の判定機能が用意されています。
1 2 3 |
m != 4 m > 4 m < 4 |
繰り返しますが、= と==は似て非なるものですので混乱しないように!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import subprocess message = "証券コードを入力してね" print(message) stock_code = input() m = len(stock_code) hantei = m == 4 if hantei: yahoo_url = "https://stocks.finance.yahoo.co.jp/stocks/chart/?code=2914.T&ct=b" kabusensor_url = "http://kabusensor.com/brand/?code=2914" buffetcode_url = "https://www.buffett-code.com/company/2914" subprocess.Popen(['open', '/Applications/Google Chrome.app', yahoo_url]) subprocess.Popen(['open', '/Applications/Google Chrome.app', kabusensor_url]) subprocess.Popen(['open', '/Applications/Google Chrome.app', buffetcode_url]) else: print("正しい証券コードを入力してください") |
どうでしょうか?できましたか??
- 条件部分にはTrueかFalseがセットされる変数を記載する
- ifとelseのすぐ後ろにコロンが必要(これはPythonのお約束で記載しないとエラーになります)
- ifとelseの後の処理はインデント(文字下げ)が必要(これもPythonのお約束)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
if hantei: <処理A> else: <処理B> if hantei==true: <処理A> else: <処理B> if m==4: <処理A> else: <処理B> |
ifの条件部分にはTrueかFalseが来さえすれば、このように様々な方法で記載できます。
- 株価が1,200円を超えたら自分にメール通知する
- 損失が100,000円を超えたらツイッターに「うぎゃー!」っとメンションする
などなどプログラミングで実現したい機能を考えた時には必ず必要な処理となりますので、しっかり勉強していきましょう!
次回の学習予定
- forループ(2.7.7)
- リスト(4.1)
こちらの本を教本にした「投資家のためのプログラミング勉強会(投プロ)」を主宰しています。
そもそもプログラミングとはなんぞや、Pythonを実行させる環境をどのように用意するか、などプログラミングにおける超基本的な内容が、我々のような非ソフトウェアエンジニア向けに分かりやすく記載されています。はじめの一歩にはこれ以上ない教材です(^^)