programing sisters 姉

プログラミングを学習するブログです

独学プログラマー6章読んでみた:文字列操作

 

こんにちわ!!

昨日は山登りしてきて疲れて珍しく早く寝たので

早く起きれましたーーー!!

けど結局研究室にくるのは昼ってゆう。なんで。

 

この子下書きにずっといたのにアップするの忘れてました。

 

この章は文字列についていろいろ

書いてありました。便利なメソッドとか。

 

基本的な文字列の扱い方

 

  • 三重クォート文字列:"""

文字列を複数行書きたいときに使用するものです。

f:id:yoshinon444:20180830115220p:plain

" \n "は改行の意。

 

 

  • インデックス・マイナスインデックス

文字列はインデックスで指定することができて

0 ~ (文字数-1)の範囲できます。

またpythonはマイナスインデックスが使えます!

マイナスインデックスって初めて聞いた~

また一つ賢くなってしまった~いぇ~

f:id:yoshinon444:20180830115250p:plain

 こんな感じですね。

-1を指定すると一番後ろの文字が対応していますね。

 

 

  • 文字列の演算

足し算と掛け算ができます!

文字列の演算Cではなかった気がする。よね?

とりあえずこれもやってみた。

f:id:yoshinon444:20180830115313p:plain

第二外国語でドイツ語取ってたので

ドイツ語でビールくださいと書いてみた。

(全然しゃべれない)

(落としまくって2個下の子たちと受けて単位取得)

(単位もらえればこっちのもん)

 

 

文字列にもin演算子が使えます。

f:id:yoshinon444:20180830115327p:plain

True / Falseで出力されます。

 

 

  • スライス

コンテナ名 [ 開始インデックス:終了インデックス ]

と書くことで文字列の一部分を抜き出すことができます。

f:id:yoshinon444:20180830120627p:plain

文字列だけでなくリストもスライスすることが

できるのでどっちかというとそっちの方が使いそう。

 

 

 

文字列の便利なメソッド

 

  • 大文字小文字変換

upperメソッド:すべてを大文字に変換

lowerメソッド:すべてを小文字に変換

capitalizeメソッド:文字列の先頭だけを大文字に変換

f:id:yoshinon444:20180830121311p:plain

便利そう。

 

 

  • 書式化

formetメソッド:一部の文字列を置き換える

f:id:yoshinon444:20180830121653p:plain

inputで利用者に入力してもらってってゆうのに

よく使われそうだなー。

 

 

  • 分割

splitメソッド:文字列を複数の文字列に分割する 

f:id:yoshinon444:20180830122233p:plain

分割する間の文字を引数で与えれば勝手に分割してくれます。

"I wish i could, but i can't. "は人生でいつか男性に

行ってみたいセリフの一つです。

せめていい女振りたい。

まずは英語圏に行くことから始めなければ。

 

 

  • 結合

joinメソッド:すべての文字列の間に新たな文字を追加

f:id:yoshinon444:20180830122627p:plain

これもリストに使う方が多そう。

ということでリストにも使ってみた。

"間に入れたい文字".join(元の文字列 or リスト)

なんですね。順番間違えそう。

 

 

  • 空白除去

stripメソッド:最初と最後の空白を取り除く

これは日本語文字の全角スペースも取り除けます。

Cやってた時に全角スペース入り込んじゃって

エラー祭りになった思い出があるので

全角スペースめっちゃ嫌いです。

f:id:yoshinon444:20180830122916p:plain

こんな感じで前後の空白は取り除かれるけど

文字間の空白はそのままです。

 

 

  • 置換

replaceメソッド:ある文字を別の文字に置き換える

f:id:yoshinon444:20180830123320p:plain

間違いがあったり、変更が生じたときに

使うのかな?多分。

 

 

  • 文字を探す

indexメソッド:最初にある文字が現れる位置を返す 

f:id:yoshinon444:20180830123539p:plain

in演算子はある文字が入っているかどうか知れますが

これは位置まで知ることができます。

けど最初に出てくる場所しかわからないので

したい処理に応じて使い分ける必要がありそう。

 

 

終わり

文字列に関してこんなにたくさんの

メソッドが用意されているのがびっくりでした。

使いこなせればいろいろなことが

楽にできそう!がんばろー!

 

 

 

 

 

 

 

独学プログラマー5章チャレンジ問題やってみた:コンテナ

 

1日1記事書こうと思ってたのですが

gossip girlにはまり一気に見ていました。

 

あんなセレブに生まれて

パーティー三昧の日々に

専属ドライバー、お手伝いさんがいる

生活にあこがれますね。。

絶対お金持ちになりたーーーーい!

ということでpythonの勉強に

戻ってきました。

 

今回のチャレンジ問題は結構簡単でした。

 

1,2,3問目は前回やったリスト、タプル、

辞書をそれぞれ自分で定義してみる問題でした。

そのままなので省略!

 

4.キーを入力させてバリューを表示する

 

f:id:yoshinon444:20180825151921p:plain

 

こんな感じですね。

体重は載せませんでした。

入力させるinputは使い慣れてなくて

本をカンニングしてしまいました。。

まだまだ慣れが必要ですね。

まぁけど問題なしかな!

 

 

5.ミュージシャンと曲名

 

f:id:yoshinon444:20180825152450p:plain

 

これは時間がかかった~。

とゆうのもせっかくだから私が好きな曲で

あんまりみんなが知らなさそうな曲を

紹介しようと思って自分の音楽漁って

何がいいかな~って考えながらやってたら

懐かしい曲いっぱい見つけちゃって

いろいろ聞いてました。

 

邦楽縛りです!!

 

アイドルからラップまで入れてみた!

もうどうしても暇で暇でしょうがない!って人は

聞いてみてください。

私は当たり前だけど全部好きです。

 

5章これだけでした。。。

なんか短い記事になっちゃったけど

まぁいいか。

 

まだ時間あるので今日このまま6章に突入します。

ばいばい。

独学プログラマー5章読んでみた:コンテナ

 

ご無沙汰しております。

ブログ書くの飽きたわけではないのです!

 

院試の勉強の為、平成最後の夏に白目を向きながら

研究室にこもって微積・線形などの勉強をしておりました。

 

大学受験以来、数学など触ってなかったので

理解するのに時間がかかるし、「あーこれか!」と

思っても「こんなに忘れてるのか、、」と

悲しくなりながら勉強していました。。。

 

昨日院試が終わったのでやっと記事がかける〜!!

ということで今日からまたpythonの勉強に戻ります。

 

今日は5章を読みました。

この本の私が個人的に好きなところなのですが

章のはじめに名言みたいなのが書いてあるのです!!

 

5章には「愚者はいつまでも悩み、賢者は尋ねる」とありました。

わかってはいるんですよ!わかってるんだけどなかなか

環境によってはこの尋ねるって行為がハードル高かったりしますよね。。

けど私は「わからないことはわかってる人に聞く」という

今後の人生の目標を立てています。

そしたらこの言葉を見つけて、なんてタイムリー!目指せ賢者!

と思いました。以上です。

 

この章はオブジェクトをコンテナに保存する方法、

具体的にはリスト・タプル・辞書について書いてありました。

 

 

 

リスト:好きな順番でオブジェクトを保存できるコンテナ

 

リストの特徴としてあげられるのは、繰り返し可能(イテラブル)

かつ、変更可能(ミュータブル)であることです。

また同じ型でなくても1つのリストに入れられます。

 

定義の仕方:[ ] を使用

f:id:yoshinon444:20180822173256p:plain

 

追加・削除の仕方:append / popメソッド

f:id:yoshinon444:20180822173318p:plain

 

こんな感じです。"mom","dad"を追加しようと思ったのですが

appendメソッドは1つのアーギュメントしか取らないので

一気には無理と言われたので、やむなくパパは諦めました笑。

popメソッドは後ろから要素を取り除くメソッドらしい。

そしてリスト同士は足すこともできるとありました。

 

 

要素の検索:in演算子

f:id:yoshinon444:20180822174118p:plain

 

 "検索要素" in コンテナ名

と書くことで"○○"がfamilyというリストの要素

であるかどうかを調べることもできます。

これは他のコンテナでも使えます!便利!

 

 

 

タプル:好きな順番でオブジェクトを保存できるコンテナ

 

タプルはほぼリストと同じですが

違う点は変更不可能(イミュータブル)であるところです。

 

定義の仕方:( ) を使用

f:id:yoshinon444:20180822175006p:plain

こんな感じですね。

気をつけたいところは要素の数が1つだけの時は

その後に" , "をつけなければなりません。

これリストあればそれででよくね?と思ったのですが

絶対的に変わらないということを保証しているから

逆に地点の座標など不変の値を使う時に

便利らしいです。使う時いつかくるのかな、、不明、、

 

 

 

辞書:2つのオブジェクトを関連付けて保持するコンテナ

 

これは片方を"キー"、もう片方を"バリュー"としてマッピングします。

辞書は変更可能(ミュータブル)でのちにキーバリューペアを

追加・削除することができます。

 

定義の仕方:{ } を使用

f:id:yoshinon444:20180822180355p:plain

 

追加・削除の仕方:delキーワード

f:id:yoshinon444:20180822181312p:plain

 

このように追加の時は、[ 辞書名 ] [ [ キー ] ] = [ バリュー ]と書き

削除の時はdelキーワードを使用します。

キーとバリューがセットになっています。

 

ただ、辞書のキーは変更不可能(イミュータブル)なので

文字列かタプルならキーに使用できますが

リストや辞書はキーには使用できません!!

そして、in演算子で検索をかける時はキーしか

検索できないのでここでも少し注意が必要そうです。

 

 

 

5章はこんな感じでした!

明日は練習問題をやりたいな!

 

今日はこれ書く前、今度富士山に登るので

何を買えばいいのか調べてたんですけど

通販では服の生地の厚さとかわかんないし

記事によって持ち物違ってよくわかんなくなってきたから

ちかぢか山登りの用具売ってるお店に行きたいと思います。

 

死なないようにお金かけようと思います。

わからないことは人に聞く。

 

以上。

 

 

 

 

 

 

 

 

 

 

 

独学プログラマー4章チャレンジ問題やってみたPart2

 

前回の記事は長くなってしまったので

続きの問題をこの記事に書きます~!

Part2です~!!いぇ~!!

 

あ!あと、前回わからなかったこといろんな人に

教えてもらってわかったので更新しました!

ぜひ見てください~!!

 

更新の部分書き終わってちょっとCSSいじろって思って

いじって戻ったら追加の部分全部消えてしまって

キレそうになったけど、誰に怒っていいのか

わからなかったのでやめました。

(先に更新ボタンを押さなかった自分)

 

これからは消えちゃう前にすぐさま更新ボタンを

押すことにします!一つ勉強になりました。

 

では続きいきま~~~す!

 

 

 

4. 2つの関数

 

f:id:yoshinon444:20180730151402p:plain

これは、1つ目の関数で7を2で割って求められる整数を求め

2つ目の関数でそれを4倍にして出力しています。

 

問題なし!!!!

特にトラブル&疑問なく平和にできました。

 

 

 

5. 文字列をfloat型に変換する関数

 

f:id:yoshinon444:20180730151905p:plain

こんな感じです。

これも初めは型の定義のことで戸惑ったけど

" 例外をキャッチする "という響きの良い言葉

を実際に動かすべく頑張って理解しました。

 

これ、"ddd"を与えた場合、float型に変換できないので

exceptの方に行ってキャッチしてくれるんですね。

"123"などを与えた場合は変換可能なので

"123.0"というように出力してくれます。

 

個人的なあれですけど、pythonは型をはじめに

定義しなくて良いから便利だけど

後から見たときにわからなくならないように

string型の変数は変数の名前自体をstringと

することで頭がごっちゃにならないように

しているのかなと思いました。

 

今書いてて思ったんですけど、わかりやすいように

変数の名前を付けてあげるのは他の言語でも

おんなじことですね。てへぺろ

これからややこしくなるだろうからx,yとかじゃなく

もっといい感じの名前を付けれるようになりたいです。

 

 

 

6. 今までの関数にdocstringを書く

 

f:id:yoshinon444:20180730152818p:plain

これは前回の記事の2つめのやつに

docstring書いた画像です。

まだまだ簡単な関数しか作ってないので

すごい短いですね!

 

これは本に書いてあったように自分で

書いてみたのですが、ネットで調べてみると

いろんな書き方があるみたいですね!

日本人のチームだから日本語で書いてるみたいな

記事もあったんですけど、なんか英語で

書いた方がかっこよさげだから英語で

いい感じに書けるように自分の

docstringの書き方を見つけたいです。

 

これからなんか関数を書くときは

docstringも合わせて書いていこうと

おもいます。

 

 

 

終わりに

 

以上で一応4章終了です~!!

なかなか進まないですね!!!!!

まぁ少しづつやります。

 

今日は院試のために数学の勉強してたんですけど

意味不明だし疲れたしで記事書こーと思って書きました。

日本語へたくそってよく言われるけど

(多分語彙力が少ないって意味だと思う)

文章書くのは楽しいですね。

パソコンだと手が黒くなる必要もないし。

 

あー数学わかんないなーー。

院試までに間に合うのかなー。

わかんないけどもうひと頑張りしてきます。

ばいばい!

 

 

独学プログラマー4章チャレンジ問題やってみたPart1

 

お久しぶりです。

前回あんだけ翌日に書く言い切ったのに

さぼってしまいました。

 

 

というのも、前回記事書いた翌日に

大学の授業の期末テストが金曜日に

3つもあることに気が付き、普段へーって感じで

しか授業受けてなかったので

必死にテスト勉強していました。

時間がなかったので統計学的な内容の

授業のテストを暗記で乗り切るという

奇策?にでました。

 

けど今後深層学習するなら統計学は大事

らしいのでおいおいちゃんと理解できるように

ならないとなぁとは思っています。

 

テストの出来は微妙ですけど

今は先生が優しくて単位くれることを

願うしかないですね!!

大学生のみなさんテストお疲れさまでした!

自分もお疲れさまでした!!

 

ということで、やっと4章のチャレンジ問題

に手を付けることができました。

やはり自分で書いてみると「ん?」と

思うことが出てくるので、本読むだけでなく

手を動かすことって大切だなーと痛感します。

 

 

 

1.  2乗を返す関数

 

f:id:yoshinon444:20180729140102p:plain

こんな感じですね。

関数名の隣に引数を書くときにその引数の型を

定義しなくて良いということに違和感を覚えました。

実際に少数やマイナスの値を引数として渡しても

きちんと動きました。

 

ただ、"2.3"を引数として与えたときに

"5.289999999999999"と出てきてなんで"5.29"では

ないのかなと思いました。

調べてみたのですが、私の調べ方が

悪いのか理由が出てこなくてわかりません。

知ってる人教えてください。

 

 

原因と解決策:round関数

 

教えてもらって原因がわかりました!

ありがとうございます。

 

コンピュータは二進数に直して計算するんですけど

2.3はきれいに二進数にすることができないので

近似して計算してはるらしいです。

なので上のような結果になってしまったみたいです。

 

解決策としてpythonの組み込み関数である

round関数が使えるみたいです!

 

round関数は小数点を丸めこむことができます。

丸め込むというのはほぼ四捨五入と同じなんですが

〇.5の時は偶数になるように処理するらしいです。

例を見た方が早いと思うので下に例を書いておきます。

 

  • 2.3 → 2
  • 2.7 → 3
  • 2.5 → 2
  • 3.5 → 4

 

round関数の使い方は調べたらたくさん

丁寧に解説しているページがありました。

 

" round(引数1, 引数2) "

 

と書くのですが、引数1には丸めたい数字や変数を書き

引数2には希望の小数点以下桁数を書きます。

引数2に何も書かないと整数に丸め込む設定に

なっているみたいです。こんな感じです。

 

f:id:yoshinon444:20180730144102p:plain

 

これを使ってもう一回上の関数を動かしてみました。

f:id:yoshinon444:20180730144324p:plain

 

ちゃんと" 5.29 "とでましたぁぁぁぁぁぁぁ!!!!

やったぁぁぁぁぁぁぁ!!!!!!!

 

 

 

2.  文字列を出力する関数

 

f:id:yoshinon444:20180729140936p:plain

こんな感じです。

ここもstring型の引数ってどう書けばいいんだ?

と思いましたが、そもそもそこで定義する

必要がないからこれでいいのか!と思いました。

前回素直にCとの違いを受け入れられますと言ったけど

全然素直に受け入れられてない自分がいました笑。

理解はできるから練習あるのみですね!はい。

 

 

 

3.   3つの必須引数, 2つのオプション引数がある関数

 

f:id:yoshinon444:20180729141931p:plain

こんな感じです。

初めに「オプション引数の一つだけ

デフォルト値と変えたいときどうなるの?」と

思っていたのですが、いろいろやってみて

わかりました!

 

ここではa,b,cが必須引数でd,eがオプション引数です。

これは書く順番が大切で、

オプション引数をはじめに書いたり

必須引数とオプション引数をごちゃまぜに書いたら

動かないことがわかりました。

で、必須引数だけに値を与えるのが上の画像で

1つ与える引数を増やしたらdの値をデフォルト値から

変えることができ、もう1つ与えるとeもデフォルト値

から変えることができました。

 

とゆうことは、dは変えずeだけを変えることは

できないということ??

なので、オプション引数を複数書く場合は

変更する可能性が高いものを前に書くべき

なのかな??と思いました。

 

 

後でわかったこと

 

dは変えずeだけ変えたいときは、引数に

e=(数字)と入れればいいですね! 

書いたとき思いつかなくてすみません~!!

ということで、

" 先に必須引数、後ろにオプション引数 "

の順番だけちゃんと守っとけば大丈夫です。

安心してください。

 

 

終わりに

ちょっと長くなったので残りは次の記事に書きます~!

 

自分でやってみてこうなのかな?と

思ったことを書いているので、

「なにこいつトンチンカンなこと言ってるの?」

と思った方はぜひ教えてください~~!

 

独学プログラマー4章読んでみた:関数

 

今日は4章を読みました。

 

4章は関数について書いてあって

  • 関数があるとどれだけ便利か
  • 基本的な組み込み関数
  • 必須引数とオプション引数
  • スコープ
  • 例外処理
  • ドキュメンテーション文字列(docstring)

なんかが書いてありました。

 

オプション引数と例外処理、docstringは

初めて知りました。

 

 

 

オプション文字列

 

オプション引数は、もし引数を与えられずに

関数を呼び出された場合でも

デフォルトでその関数に元々与えられている

オプション引数を使用し、処理を行うものです。

 

 

 

例外処理

 

例外処理のtry,exceptについては

エラーがpythonではオブジェクトに

なっているので、そのまま

プログラム内に書けるのは

すごい便利だなーと思いました。

 

C言語に比べてより英語に近い感じがします。

慣れたらこっちの方がコードを読みやすそう。

 

私はエラーが出るのが嫌で

意味わからなくなってプログラミング

挫折したので、"例外(エラー)を捕まえる"という表現は

すごい気に入りました。

どんどん捕まえて欲しい。

 

簡単な例を書くとこんな感じです。

 

try:

    print(a/b)

except ZeroDivisionError:

    print("b cannot be zero.")

 

ゼロでは割れませんよ〜と言っていますね!

 

どんどんプログラムを書いて慣れていこうと思います。

exceptの後の例外が複数になる場合は

カッコを追加し、書く例外をカンマで

仕切ればokみたいです。

 

 

 

ドキュメンテーション文字列

 

ドキュメンテーション文字列については

将来その関数を見た人が、これは何をする関数か

というのがわかるように書くそうです。

 

関数の目的と、必要な引数の種類について

書くみたいなんですけどコメントアウト

書けばよくね?と思って調べたんですけど

複数行のコメントは

"""

コメント複数行

"""

って感じで書くんですね!

 

とゆうことで、関数のはじめにその関数の説明を

コメントで書いてあげることをドキュメンテーション文字列

と呼ぶことがわかりました。

ありがとうございました。

 

 

 

 終わりに

 

ちなみに読んでいる本はこれです!

 

f:id:yoshinon444:20180723174237j:plain

 

バー外す派なので写真をとったので

バーはポイします。

ありがとうございました。

 

最近はいろんなことに感謝するように

心がけています。

 

明日は4章のチャレンジ問題やりたいな〜

更新しなかったらサボったと思ってください。

ありがとうございました。

独学プログラマー3章読んでみた:演算

 

3章をやり終えました!

 

苦戦?でもないけど自分でプログラム書く上で

あ、間違えた!ってなることが少しあったのは

演算子C言語とは書き方が違うところでした。

 

(Cは一応授業でやった)

(1年生の授業で3回落とした)

(多分この授業のせいで留年した)

 

pythonの算術演算子は、

  • 累乗 **
  • 余剰 %
  • 商  //
  • 除算 /
  • 積算 *
  • 減算 -
  • 加算 +
であり、Cと少しだけ違いました。
 
比較演算子はCと同じ!
 
論理演算子は、Cだと&&, ||とか使うけど
pythonはそのままand,or
と書けるので楽だしわかりやすい!!
 
Cに慣れてる人は変数も定義する必要なかったりと
違うことろが多々あるから初めは
戸惑いそうだなと思いました。
 
しかし、私は不真面目な学生だったので
Cも何となく計算ぐらいはできる~レベルなので
戸惑いはなく素直に受け入れれます。
 
3章の最後にあるチャレンジ問題を
やってみました。
 
 

 

f:id:yoshinon444:20180721160853p:plain

f:id:yoshinon444:20180721160734p:plain

3章チャレンジ

なんかどうやってプログラム貼れば

いいのかわからなかったので

画面キャプチャしました笑。

 

あ、私はカラフルでかわいいし

わかりやすいのでAtom派です。

 

こんな簡単な計算しかまだできないけど

いづれこれ使って何かできるように

なれるのかな~~。

 

謎だけどまぁゆる~く勉強します。