Close

pythonのlistは代入しただけでは変更の巻き添えを食らうからcopyで複製する

タイトルだけでは意味がわからないと思うので実際のコードを見てみる このコードの実行結果は以下 の時点でlist1とは独立したlist2と言うリストができていると思ったが、 list2を変更(remove)したらlist1も巻き添えを食らって変更されていた という問題 巻き添えを食らいたくないときはcopyを使えば良い list2を変更しても、list1は影響を受けない 実行結果

モンティホール問題実験してみた(python)

この前忘年会で話題となった話 テレビ番組で最近やってたとか いつかの就職試験で出た(もちろん外した)ので 私にとっても思い入れのある問題 ルールは以下 0:三つの扉がある。一つは正解(車の扉)。二つは不正解(山羊の扉)。 1:挑戦者は三つの中から一つ扉を選ぶ。 2:司会者(モンティ)は答えを知っており,残り二つの扉の中で不正解の扉を一つ選んで開ける。 3:挑戦者は残り二つの扉の中から好きな方を選べる。このとき扉を変えるべきか?変えないべきか? 参考リンク: モンティ・ホール問題とその解説 直感だと、扉を変えても変えなくても確率は同じだけど 実際は変えた方が確率は上がるよね と言う話 解説はこちらがわかりやすかった 【条件付き確率】全米が震えたモンティ・ホール問題を解説 一応、念の為、本当に確率が違うのかpythonで実験してみた コードは以下 いざ、実行 すごい、扉5枚の場合は4倍にちゃんとなる youtubeで紹介されていた3枚扉にすると ちゃんと2倍に落ち着く

PythonのClassとConstractorとMethodをざっくり理解する

PythonのClassとConstractorとMethodをざっくり理解する ※Python3.5.0前提で記載 用語整理 Class(クラス):設計書 Constractor(コンストラクター):Classが作られるときに最初に実行されるやつ Method(メソッド):Classの機能 白紙のClass(設計書)を用意する ここからは実際にClassとやらを用意する Classの枠はこれだけ 今回は「Human」というClassにした Class(設計書)の中身を書いていく 白紙設計書では意味がないので、この中に色々内容を書いていく Classの中には、いくつか機能(Method)が書かれている Methodは「def」という接頭語?で記載する 今回は「Human」クラスに、「laugh」と「walk」という機能を用意した 「init」という名前のMethodは、Classが作られた絶対実行されること。 これは、特別に「Constractor」と呼ばれる 変数の定義などがよく書かれる 何でinitなの?とかはよくわからん、そう決まってる(雑) その他の任意の名前で書かれているMethod(例えば上の例では「laugh」と「walk」) は、 呼び出されたら使われる機能 「def」から始まる塊について「class」の外で使われたいたら 「function(関数)」と呼ばれる。紛らわしい、、、 参考:pythonの中でよくみる「def」から始まる塊について、用語が紛らわしいので整理する 設計書の全容は以下 Class(設計書)からもの(Instance)を作って動かす 設計書が書けたので、設計書から「もの」を作って、機能を使ってみる できたものを「Instance(インスタンス)」と呼ぶ 何もなければ、Humanクラスはこれだけで作成できる ただ今回は、色々パラメータを使う前提で「Class」を書いているので、こんな感じで作成する パラメータを使う前提で、、というのはこの部分のこと 更に、「Human」Classから作成したオプジェクト(以下の例では「taro」 と定義)から各機能を使うには、 「taro.【機能名】」と記載する こんな感じ 実行結果 今回Classを作成して実行したコード全容は以下 実行結果はこうなる

pythonの中でよくみる「def」から始まる塊について、用語が紛らわしいので整理する

pythonの中でよくみる「def」から始まる塊について、用語が紛らわしいので整理する Classの中の「def init()」 から始まるのは「Constractor(コンストラクター)」 Classの中の「def」から始まるけど、Constractorではないのが「Method(メソッド)」 Classの外の「def」から始まるのは「Function(関数)」

Office365のOutlook APIをpythonで叩いてSlackに本日と翌営業日の予定をPostしようとしてみる(5)本日と翌営業日の予定をPostしようとしてみる

フルコードはこちら https://github.com/yoshi-island/o365_slack_work 前回の記事はこちら 本日と翌営業日の予定をPostしようとしてみる ごめんなさい、まだSlack Botレビュー中なので、Slackにポストはまだできていない でもこの通りにやればできるはず わかりやすいように、一旦ポストする内容をprintするようにしています python-slackclientを使うので、 python-slackclientをpipでインストール 同じ階層の先ほど作成したpassword_list.pyの内容に 先ほど控えたslackのtokenと、ポストしたいチャンネルのIDを記載 (チャンネルIDはブラウザでSlackチャンネルにアクセスした際のURLに記載されている) 同じ階層に以下のポストするこのようなファイルを作成する 汎用的でなくてすみませんが、以下の変数は自身の環境に合わせて書き換えとく これで実行すると、本日の予定と、次の出勤日(月〜金)の予定がPostされる いつの予定を出力したいかは「## get next business day events」を操作してくださいませ。 まだBotが動かないので、一旦print結果でご容赦、、 土曜日の場合は当日と翌月曜の予定が記載される 日〜木曜日の場合は当日と翌日の予定が記載される 金曜日の場合は当日と翌月曜の予定が記載される うん、とりあえず必要な情報取れてる。 Trouble Shooting Slack Botの投稿がうまくいかない場合は、Slack Distributionのチェックが全て付いていないかも ちょっと面倒くさいけど、全てがチェックつくように規約確認したり、Botの説明を記載したり頑張ってください。