Pythonコード紹介!!エラー処理try、expect
はじめに
この記事では、エラー処理に使われるPythonのコードを紹介します
関数紹介シリーズと一緒です
シリーズ名を変えただけです
色々考えたけど、関数紹介よりコード紹介の方が汎用性が高そうだなって…
汎用性も可読性も大事なのです
Pythonと同じ!
例外処理とは?
コードのタイプミスやらなんやらのおかげで、
一度くらいはエラーを起こしたことがあると思いますが(もしなかったとしても、きっとこの先にあるでしょう)
特にinput()を使うときなんか
数字だけだと言っているのにアルファベットを入力されたり、
エラーが起きやすいです
そういうときに重宝されるのが例外処理です
エラーについて、例外を変数に格納したり叱責を設定できます
例外処理の方法
例外処理は、tryブロックとexceptブロックで構成されます
tryブロックに処理を、expectブロックにエラーの場合行われる処理を書きます
>>> num = [1,2,3,4] >>> index = 7 >>> try: ..: print(num[index]) ..: except IndexError: ..: print('Error!') Error!
tryブロック
記述方法は以下の通り
>>> try:
..: 実行するコード
コードの内容はなんでも構いません
コンマを忘れないようにしてください
exceptブロック
このブロックは複数階層作ることが可能で、
処理は「elif」に似ています
最も単純なコードは下記の通りで
この処理は全てのエラーを拾います
>>> except:
..: エラーの時に実行されるコード
引数を設定し、特定のエラーを指定することもできます
>>> expect IndexError:
..: エラーの時に実行されるコード
上記のコードで引数として使われているIndexErrorは、
シーケンスに無効な位置を指定したときに返される例外型です
他にも色々あります
例外の保存
下記のようなコードで、
例外を任意の変数に代入し、保存することができます
except <i>exceptiontype</i> as <i>name</i>
exceptiontypeに例外の型を、
nameに変数名を記述します
先述したIndexErrorは、exceptiontypeの具体例の一つで、
Exceptionは全ての例外を表します
使い方は、for...asに近いものを感じます
>>> try: ..: print('1' + 4) >>> expect Exception as error: ..: print(error) can only concatenate str (not "int") to str
例外の内容が出力されました
数字と文字を同時に表示したから怒られたようですね
まとめ
適当にスプリクトモードで書いてみました
num = [1, 2, 3, 4, 5] #numリストを作成 while True: print('Please enter any number or q. ',\ 'Never enter anything else...OK?:') x = input() if x=='q': break #プログラムの終了コマンド try: index = int(x) #入力されたデータ型をint型に変換 print(num[index]) #numリストの値を表示する except IndexError: print('Bad index:', index) except Exception as other: print('エラーの原因:',other)
興味あったらコピペしてみてくださいねー
Python処理集!!反復処理 of for by for for イテレータ編
イテレータ・イテラブルとは?
Pythonの入門書を読んで行くにあたって、
それなりに遭遇するこれらの語に悩まされた方も少なくないはず(ですよね?)
例えばしろちゃは適当に読み飛ばした挙句、
意味が分からなくなってばたんきゅーした覚えがあります
シーケンスだオブジェクトだと、
英語基準のPythonにはどうにも不可解なカタカナ語が多いのが厄介です…
そう思っているのはおばかなしろちゃだけかもしれませんが…小声
イテレータ
前置きが長くなってしまいましたが、
簡単に言うと、イテレータとは
イテレータ(英語: iterator)とは、プログラミング言語において配列やそれに類似する集合的データ構造(コレクションあるいはコンテナ)の各要素に対する繰り返し処理の抽象化である。
イテレータ - Wikipedia
我らがWikipedia大百科様によれば上記が定義となります
要するに、
「要素の数だけ反復処理を行う」
ことだと思っておいておけばいいと思います
いくつか具体例を知り、扱っていけば
おばかなしろちゃでもそれなりに…理解できるようになるでしょう。きっと。いつか。
プログラミングの世界ではかなり色々な場面で用いられています
「イテラブル(な)オブジェクト」の意味
イテラブルなんだかイラテラブルなんだかイラテルブルなんだか、
なかなか判別が難しいところですね
簡単に言えば「イテレータに対応しているオブジェクト」の意となります
つまり、イテラブルオブジェクトはイテレータによる処理が可能というわけです
あとはイテレータの意味さえ分かれば簡単ですね!
イテラブルオブジェクトの例
具体例は挙げればきりがありませんが、代表的なものを羅列しておきます
- 文字列
- リスト
- タプル
- 辞書
- 集合
あくまで一例ですが、これらはイテラブルオブジェクトとなります
また、そうでないデータ型ももちろんあります
例えば、int型はイテラブルオブジェクトではありません
for による反復処理
反復処理の基本、whileとは似て非なるforです
whileは「条件式」に当てはまる限りループを続けますが
forは指定された範囲(回数)内で処理を行います
条件を指定するか、範囲を指定するか
主となる違いはその点だと思います
forの基本
記述は以下の通り
>>> love = ['music', 'cat', 'mom', 'blood', 'pink'] >>> for thing in love: print(thing) music cat mom blood pink >|| <span style="font-size: 80%">病み期かな?</span> loveの大きさだけ処理を繰り返していますね ちなみに、辞書型を処理するとキーが繰り返されます そんなの嫌だというなら、イテラブルなオブジェクトの後ろに 「.value」「.items」を使います すると、それぞれ「値」と「値、キーのタプル」が処理されるようになるのです! ** break による終了 whileにも言えることですが、 breakによってループを中止させることができます 不健全なワードが表示されそうになったらループを脱出しましょう >|python| >>> for thing in love: if thing == 'blood': break print(thing) music cat mom
continue による巻き戻し
continueの扱いもまた、whileと同じです
不健全なワードは消し去りつつ、
そのあとの素敵なワードは是非とも表示しましょう
>>> for thing in love: if thing == 'blood': continue print(thing) music cat mom pink
こうして少女の闇は最小限のキリトリで覆い隠されたのでした
さいごに
ここまで読んで下さってありがとうございます!
例のごとく、参考はオライリー・ジャパン出版の
「入門 Python 3」Bill Lubanovic著
それに加えて
引用は「Wikipedia」でした!
以下、参考書の紹介記事です!
Python関数紹介!!並行した反復処理 zip編
はじめに
この記事では、Pythonの反復処理に使われるzip関数について紹介します
なお、今回からPythonはインタラクティブモードを主に使用していこうと思います
微妙に違いますが、ほとんど一緒です
print使わなくても出力されたりするところが違いといえば違いかな…
zipの記述方法
以下のように記述します
zip(シーケンスA, シーケンスB)
シーケンスとは、連続した何かのことです
リスト、タプル、文字列、整数…etc.
連続してればなんでもオッケーってことですね
実行すると、シーケンスAとシーケンスBが並行処理されます
並行処理するシーケンスは、必要とするだけいくらでも増やせます
3つでも4つでも10000個でも好きなだけ並行処理してください
メモリが不足でクラッシュしたら自己責任でお願いします
>>>Japanese = '赤', '青', '黄色' >>>English = 'red', 'blue', 'yellow' >>>list(zip(Japanese,English)) [('赤', 'red'), ('青', 'blue'), ('黄色', 'yellow')]
こんな感じです
また、並行処理するシーケンスの大きさ(=値の数)が異なる場合は
最も小さいものが全て処理されたときに繰り返しが終了します
先ほどの変数Englishに、ピンク色を加えてみます
>>>English = 'red', 'blue', 'yellow', 'pink' >>>list(zip(Japanese,English)) [('赤', 'red'), ('青', 'blue'), ('黄色', 'yellow')]
zip関数のデータ型
>>>type(zip(Japanese, English)) zip
これで結論は出たようなものですが、
zip関数で作られる値のデータ型はzip型となります
また、zip型はイテラブル(イテレータ*1に対応している)な値で、
反復処理するか、リスト型や辞書型に変換する必要があります
反復処理for...inでの利用
zip関数で返された値を反復処理したい場合は、以下のように記述して下さい
先の英語と日本語で記述したzip型のオブジェクトを並行処理してみます
>>>for iro, color in zip(Japanese, English): print(iro,color) 赤 red 青 blue 黄色 yellow
何の面白みもないですね(え)
さいごに
参考にした参考書の紹介記事です
ai-shirocha.hatenablog.com
*1:リスト、辞書などから要素を1つずつ取り出して返すもの
Python関数紹介!!リストの並べ替え sort/sorted編
はじめに
この記事では、Pythonの並べ替えの関数「sort」「sorted」について紹介します
「sort」と「sorted」の違い
両者の違いは二点あります
記述の仕方と、
新しい変数を作成するか、元の変数を変更するのか、
です
汎用関数「sorted」
書き方としては「print」と同じです
シンプルですね
>>> color = ['red','blue','赤','あか','アカ','アオ','青'] >>> print(color) ['red', 'blue', '赤', 'あか', 'アカ', 'アオ', '青'] >>> sorted_color = sorted(color) >>> print(sorted_color) ['blue', 'red', 'あか', 'アオ', 'アカ', '赤', '青']
sorted関数は元の関数を変更することなく、
並び替え後の新たな関数を作成します
つまり、並び替えた関数は変更されません
手動で変数の値を更新するか
別の変数を用意することが必要です
>>> print(color) ['red', 'blue', '赤', 'あか', 'アカ', 'アオ', '青']
リスト関数「sort」
リスト型専用の関数「sort」では
「sorted」とは記述の仕方が異なります
>>> color = ['red','blue','赤','あか','アカ','アオ','青'] >>> color.sort() >>> print(color) ['blue', 'red', 'あか', 'アオ', 'アカ', '赤', '青'] >|| 上記の通り、記述の方法は >|python| color.sort()
「変数名ドットsort()」です
元の変数の値は更新されることに注意してください
順序の変更
引数「reverse = True」を追加すれば
順序を逆にすることができます
>>> color.sort(reverse = True) >>> print(color) ['青', '赤', 'アカ', 'アオ', 'あか', 'red', 'blue']
並び替えの順序は?
両方の関数とも同じで、
並び替えの順序は次のようになります
アルファベットA~Z→平仮名あ~ん→片仮名ア~ン→漢字(追加した順)
なおint型とfloat型は混ぜても正常に動作しますが、
str型と数字を混ぜて実行しようとするとエラーになります
さいごに
読んで下さった方、本当にありがとうございます!
今回はPythonの関数を紹介しました
まとめを書くのがめんどくさかった大変だったので、今回はなしにしてみます
さいごに、私が今使っている参考書を紹介しておきますね
「入門 Python 3」Bill Lubanovic著
Pythonの参考書の中では、かなり王道の参考書です!
Python3の情報は大方網羅されているので、とてもおすすめですよ!
商品ページ↓
入門Python 3 [ ビル・ルバノビック ]
詳しい紹介記事↓
ai-shirocha.hatenablog.com
Spyder基本操作!コンソール編
はじめに
この記事では、Anacondaの中に入っているSpyderの基本操作について紹介します
今回はコンソールとかの操作を紹介していきます
レイアウト編はコチラ↓
ai-shirocha.hatenablog.com
起動~画面の見方編はコチラ↓
ai-shirocha.hatenablog.com
IPythonコンソールでできること
ここではPythonの対話モードが使用できます
つまり、一行ごとにコードが実行できるってことですね
>>> print('Hello world') Hello world
なお、配色はスプリクトファイルのものが引き継がれます
入力と出力
ウィンドウをクリックして普通にキーを押すだけです
特別な操作は必要ありません
Enterキーを押せば実行されます
入力したコードによっては改行されますが
もう一度Enterキーを押すことで実行されます
コンソールの追加
Spyderでは、複数のコンソールをタブによって管理することができます
歯車マークをクリック→IPythonコンソールを開く
または
ショートカット「Ctrl + T」
で新しくコンソールが作成されます
作成には数秒かかります
コンソールのクリア
「cls」でのクリア
「cls」と入力し実行すると、それまでのコンソールがすべてクリアされ消えてなくなります
ヒストリログには残るので、履歴の確認は可能です
また、コンソールのウィンドウが消えてなくなるわけではなく、
設定された変数もすべて残っています
あくまで見えなくなるというだけです
変数のリセット
右上の歯車マークのお隣、
歪んだ消しゴムのアイコンから設定した変数をすべて削除することができます
コンソールタブの削除
コンソール名の右にある赤いxをクリックすると、
コンソールがタブごと消えてなくなります
タブが残り一つの時にタブを削除すると、自動で新しいタブが作成されます
切り替え
目的のタブをクリック、
または
ウィンドウ左上のファイルアイコンをクリック→目的のコンソール名をクリック
すると開きます
簡単ですね!
プログラムの中止
プログラム実行中には、歪んだ消しゴムマーク横の四角が
グレーの四角から色付きの四角にランクアップします
それをクリックすると、プログラムを強制的に停止させることができます
ループに入ってしまった時などに使用してください
まとめ
今回は、Spyderの基本操作
コンソール編!でした!!
シンプルに操作できるので、初心者の方にも簡単に使えるのです!
さいごに
読んでくださった方、ありがとうございますー!
嬉しいです(#^^#)
SpyderはAnacondaをインストールすると標準装備で付いてくるので
使いたい!と思った方はAnacondaをインストールしてみてくださいー
Anacondaについての記事はコチラです↓
ai-shirocha.hatenablog.com
Python関数紹介!!分割と結合split/join編
文字列を分割する「split」
組み込みの文字列関数split()を使えば、セパレータに基づいて文字列を分割し、部分文字列のリストを作ることができる。
引用元:Bill Lubanovic著「入門 Python 3」(オライリー・ジャパン発行)
セパレータとは文字を区切る合図のようなもののことです
データ型の変換で言うと、str(文字列)型→リスト型ですね
下記の通りに記述して下さい
>>> foods = 'りんご,apple みかん,orange レモン,Lemon' >>> print(foods) りんご,apple みかん,orange レモン,Lemon >>> foods_list = foods.split(' ') >>> print(foods_list) ['りんご,apple', 'みかん,orange', 'レモン,Lemon']
「変数名ドットsplit(引数)」の順に記述します
リストを連結する関数「join()」
join関数は、先のsplitの逆の作用を持っています
データ型はリスト型→文字列型って感じです
記述例は以下の通り
>>> flower = ','.join(flower_list) >>> print(flower) himawari,asagao,ajisai,yokuwakaranhana
joinの場合、splitとは記述の順番すら逆になります
殺意が湧きますね!
「セパレータドットjoin(変数名)」の順です
まとめ
今回の記事ではリスト型と文字列型の変換ができる関数を紹介しました!
どうにもややこしいのが多いですが、頑張らないとですね!
さいごに
さいごに、私が今使っている参考書を紹介します!
Pythonの参考書といえば、これ!ってやつ!
今回の関数もこの参考書で知りました
紹介記事です↓
ai-shirocha.hatenablog.com
購入サイト↓
入門Python 3 [ ビル・ルバノビック ]
Pythonの参考書紹介!!(入門Python3/Bill Lubanovic著)
はじめに
この記事では、オライリー・ジャパン出版のPython入門書「入門 Python 3」を紹介します
この前本屋さんで注文したのが届いたので、
とてもハッピーなしろちゃの感想とかも交えて紹介していきますー
この本です↓
入門Python 3 [ ビル・ルバノビック ]
基本情報
2015年12月1日 初版第1刷発行
2018年7月18日 初版第8刷発行著者 Bill Lubanovic(ビル・ルバノビック)
監訳者 斎藤康毅(さいとうこうき)
訳者 長尾高弘(ながおたかひろ)
発行人 (ティム・オライリー)
制作 (ビーンズ・ネットワークス)
(以下略)入門 Python 3巻末より
サイズは文芸書くらいで、厚さは3cmくらいです
一般的な参考書よりちょっとコンパクトなイメージですね
カバーはハードではなくソフトなので、おそらく殴っても人は死なないでしょう
それは不慮の事故ではなく何らかの殺意が絡んでいると思います
か弱いしろちゃも片手で持てる重さです
レイアウト
外側
見た目はかなりスタイリッシュと言いますか、個性的というか、芸術的です
カバーを外しても蛇ちゃんはいなくならないので、爬虫類アレルギーの方はご注意ください
外のカバーと内側の柄は色も含めて全く同じです
かなりオシャレなので、持ってたら様になりそうですね
中身
こういった多くの理系参考書がそうであるように横書きです
色はカラーではなくモノクロで、文字も少々小さめ
読書嫌いの方には少しとっつきにくいかもしれません
構成はかなりシンプルで余計な情報も少ないのですが
それだけに大切な情報とそうでない情報を注意して見分ける必要があります
多いわけではありませんが、イラストなども諸所に使われており
たまに気を抜くこともできる感じです
章の構成は12章に加え
前書き、いくつかの付録がついています
もちろん巻末には索引もあるので、辞書のような使い方も可能です
Pythonについての情報は、ほぼすべて網羅されています
各章の後ろには復習問題もついています
もちろん回答も!
内容
基本情報からも分かるように、著者は日本人ではありません
コードの例文にも英語が出てくることが多いです
というかほぼ英語です
(私が読んだところにはやたらとDackが出てきました
これはアヒルということでいいんでしょうか)
ここも難しいところは日本語で訳が出てくるので、安心ですね!
本文にも外国語独特の言い回しやジョーク、比喩表現などが使われている部分があります
しかしそういうのにはちゃんと解説が入っていて、割と楽しめます
前書きにも書かれているのですが、著者はかなりユニークな人物らしく
結構頻繁にジョークを入れてきます
Strong typing(強い型付け)と言っても、キーを強く押せという意味ではない(日本語ではピンとこないだじゃれ)
私たちは一般に手の指、足の指とも10本ある(私の猫のなかには、指の数が少し多いものが一匹いるが、彼は数を数えるために指を使うことはまずない)。
すべてのマシンにPython 3がプレインストールされるようになる頃には、トースターは毎日スプリンクルの乗ったドーナツを作ってくれる3Dプリンターに置き換わっているだろう。
このほかにも色々あります
しろちゃのセンスには大きな問題があると思いますが
それでも「これ好き」って思ってくださった方は絶対楽しんで読めると思います
我らがGoogle先生を愚弄するわけではないのですが、
やっぱりGoogle先生にはできないユニークな訳が読めるのもすごく魅力ですよね
最初の方に、他言語とPythonを比較しているところがあるのですが
その訳がまた秀逸で、面白いです
Pythonの情報については、ほぼほぼ網羅されています
それだけに難しいのですが、用語については各々説明があるので注意深く読んでいけば大丈夫です
入門書を一冊終わった方でも、得るものがあると思います
また、別の言語を習得している方にもおすすめです