サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「かわいい」
ka-z-z-z-ya-t.hatenadiary.org
最近サボり気味だったけれどちょっとずつ再開。 イテレータについてまとめてみる。 まず、みんpyにはこう書いてある。 複数の要素を持ったデータの要素を順番に取り出すとき、より汎用的な手法を提供するのがイテレータです。 ようするに、色んなデータ型で使える「データを順番に取り出す方法」を提供してくれるらしい。 色んなデータ型で使えるのでルールはいたってシンプル。 次の要素を取り出す 要素が終わったかどうかを判別する 以上2つだけ。 >>> for t in (1,2,3): ... print(t) ... 1 2 3 >>> for l in [1,2,3]: ... print(l) ... 1 2 3 >>> for d in {1:'a',2:'b',3:'c'}: ... print(d) ... 1 2 3 これまで見てきたfor文も、タプルやリストや辞書のデータ型を裏でイテレータオ
koiso kenji (@koiso_bot) | Twitter yyyy/mm/dd の形式でreplyすると、その日の曜日を教えてくれる それ以外の形式はすべて無視 1分間隔で10Postまで返答する それ以上は古いものから切り捨て Python,Twitter,GAE,webアプリ すべてが初心者マークですが、初心者なりにいろいろ考えて作ったので時系列にまとめておく。 なぜ小磯?昨日の勉強会の時点で、botに定期的に発言させるというところまでは進んでいたので、次はreplyに対して何か返答してくれるbotを作りたいと思った。 そこで思いだしたのが映画『サマーウォーズ』で、主人公の健二が誕生日からその日の曜日を計算で言い当てるシーン。 決まった形式を受け取って、リアクションを返すという意味で、今回の自分の趣旨にぴったりだった。 計算部分のロジックを考えるとりあえず既存の知識だけでな
はじめて勉強会というものに参加してきました。 GAEでTwitterのbotを作る #1 : ATND 印象に残ったこと箇条書 すばらしい会場とその設備(しかも使用料タダ! しかし手違いにより冷房はOFFという環境に配慮したエコな設定 Mac多っ! タイムラインが一時、おっぱいがいっぱい状態に まず会場を用意してくださった方にに感謝! 内容は、基調講演でGAE、Twitter、botとは何ぞや?というところから始まって、それからそれぞれのチームに分かれて黙々とコーディングを行いました。 僕はPythonを始めたばかりだったので、用意していただいていたハンズオンの資料を見ながら必死で課題をこなし、とりあえず1分ごとにbotが発言するところまではクリア。 途中、エンコードの関係でエラーが出たりcronの設定が上手く行かなかったりしてましたが、周りの方々に助けのおかげで解決する事ができました。
勉強会の宿題として。 以下のURLから Google App Engine 用のクライアントソフト『Google App Engine Launcher』をダウンロードする。 http://code.google.com/intl/ja/appengine/downloads.html:http://code.google.com/intl/ja/appengine/downloads.html Google App Engine Launcherをインストールし起動する。 File > New Application もしくは command + N で新しいアプリケーションを作成、Application Name を入力し Create を実行する。 すると Application Directory で指定したフォルダ内にアプリケーションのフォルダが作成される。 アプリケーションのフ
プロモーションでは「家族」というキーワードが前面にでているけれど、もっと大きなテーマ「人とのつながり」というものをすごく感じた。 特にサカエばあちゃんが、遠くにいる親戚や知り合い、今では疎遠になっているのであろう古き友人たちに「あなたならできる!」と電話をかけ続けるシーン。 ここに、何よりも「人とのつながり」を大切にする気持ちと、それを形にする「行動力」があらわれていると思う。 別に僕らは世界を救う必要はない。 けれども「つながり」を大切にする気持ち、それとほんのちょっとの「行動力」で人生をもうちょっとだけ楽しめるんじゃない?て事を、サカエばあちゃんは教えてくれている気がする。
リスト内包表記を勉強したので、前回作ったコードを書き直してみた。 rfile = open('kanshi.log', 'r') wfile = open('err.log', 'w') wfile.writelines( [line for line in rfile.readlines() if 'ERR' in line]) rfile.close() wfile.close() なにこれこわい。 一行で書けるのは便利かもしれないけど読みづらいなぁ。 慣れの問題かな?
ファイルの入出力のところまで読んだので試してみる。 ログファイルからエラーのログのみを抜き出したいので、kanshi.logから'ERR'の文字を含む行を抽出して、err.logに書き出す。 rfile = open('kanshi.log', 'r') wfile = open('err.log', 'w') for line in rfile.readlines(): if 'ERR' in line: wfile.write(line) rfile.close() wfile.close() まぁこのくらいの事はエディタ使えばさらっと出来てしまうのだけど。 そんな事はいーんだ。
set型についてメモ。 要素を追加したり削除したりできる、変更可能なオブジェクト。 重複した要素を登録する事ができない。 >>> s = set([1,2,3,2,4,5,1,4]) >>> print(s) {1, 2, 3, 4, 5} Python 3では以下のようにset型のデータを作る事ができる。 >>> s = {1,2,3,2,4,5,1,4} >>> print(s) {1, 2, 3, 4, 5} たぶん。
Python3.0では辞書のメソッドhas_key()は使えない模様。 >>> rssitem = {"title":"Pythonを勉強中", ... "link":"http://host.to/blog/entry", ... "dc:date":"2006-05-16T13:24:04Z"} >>> rssitem.has_key('dc:creator') Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'dict' object has no attribute 'has_key' あーあ。 なので以下のように書く。 >>> 'dc:creator' in rssitem False >>> 'dc:date' in rssitem True とりあえず
文字列から検索文字列を探して、インデックスを返してくれる関数。 ちなみにインデックスは0からはじまる。 >>> x = "1234" >>> x.index('23') 1 >>> x.find("23") 1 同じジャン! と思ったら、見つからなかったときの動きが違うらしい。 index()の場合はエラー、find()の場合は−1が返ってくる。 >>> x.index('9') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: substring not found >>> x.find('9') -1 なるほど。 参考リンク:http://www.python.jp/doc/release/lib/string-methods.html
ちょっと前から気になっていたPythonを勉強します。『みんなのPython』という本を買ったので、まずはこれを読破するところから始めたいと思います。
まずはPythonをインストールして、インタラクティブシェル(対話型シェル)を使ってみました。インタラクティブシェルを使えば、対話形式でPythonの命令を打ち込んで、結果を確認する事ができます。ちょっとしたコードならすぐに試すことが出来るので、便利ですね。
簡単なことからはじめてみよう。 とりあえず文字列の変数を宣言して表示してみる。 >>> name = "kaz.z.z.ya" >>> print name File "<stdin>", line 1 print name ^ SyntaxError: invalid syntax おおっ!いきなりエラー。 なんでだよっ、と思っていろいろ調べたらこういう事らしい。 >>> print(name) kaz.z.z.ya Pythonのバージョンが3.0以降の場合は組み込み関数になっているんですね。 ちなみに僕のバージョンは、 Python 3.1 (r31:73574, Jun 26 2009, 20:21:35) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" fo
タートルで図形を描くプログラムを試してみる。 from turtle import * forward(100) left(120) forward(100) left(120) forward(100) for i in range(6): forward(100) right(60) これってファイルに書いて実行した場合は、プログラムが終了した途端に図形も消えてしまうのだけれど、表示させ続けるにはどうしたらいいんだろう。 ちょっと考えて最後に一文追加した。 input() こうすれば入力待ち状態になるので図形が消えない! これでいいのかどうかは分からない。
「Python3.0では数値の精度を保とうとせず、より正確な答えを返すように仕様が変更されています。」とあったので、ちょっと実験。 >>> x = 1 / 3 >>> print(x) 0.333333333333 >>> print(x * 3) 1.0 んー、まあ1を3で割った後に3で掛けるから1でいいんだけどさ。 なんで0.333333333333の3倍が1なのだろうか? >>> 0.333333333333 * 3 0.9999999999990001 普通に計算したらこうなった。 うーん、、、謎が多いな。 <追記> 最後の計算にprint()を使ってなかったのでそれも試してみた。 >>> print(0.333333333333 * 3) 0.999999999999 これなら納得がいく。 どうやらprint()を使うか使わないかでも結果が変わってくるらしい。
このページを最初にブックマークしてみませんか?
『さざなみコーダー』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く