2010年01月 / 12月≪ 12345678910111213141516171819202122232425262728293031≫02月

--.--.-- (--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--:--  |  スポンサー広告  |  EDIT  |  Top↑

2010.01.31 (Sun)

Pythonで型チェック

型を気にせず変数を使えるPython。
でも型は気にせずにプログラムを書くことなんでできません。
というわけで、型チェックの方法。

「bool isinstance(object, type)」という関数があるようだ。
True or False が戻り値として返され、第一引数には調べたい変数、第二引数に型。
ただし、型名をすでに変数名として定義していた場合はエラーになるので注意。
 int, float, basestring, str, unicode, list, dict, tuple
などがあるみたい。


使用例:
   # listかどうか
   >>isinstance([1,2,3], list)
   >>True
   >>list = [1,2,3]
   >>isinstance([1,2,3], list)
   >>Traceback .....
     File "", .......
    TypeError: isinstance() arg 2 must be a .........

   # 辞書かどうか
   >>isinstance({'a':1, 'b':2}, dict)
   >>True

   # タプルかどうか
   >>isinstance((1,2,3), tuple)i
   >>True


参考URL:A-Liaison BLOG

スポンサーサイト

テーマ : プログラミング ジャンル : コンピュータ

20:31  |  Python  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑

2010.01.30 (Sat)

Corei7のデスクトップPCを買ったのでメモ

だいたい5年ぶりくらいに買いました、デスクトップPC。
あ、うそだ。
去年の春に3万円でPC自作したか。
まぁ、BTO で買ったのは5年ぶりと言うことで。

さて、割と見直したくなることがあるので構成をメモっておきます。

OS:Windows7 HomePremium 64bit
CPU:Core i7 860(2.8GHz, Cache8MB, 4Core, HT対応)
マザー:MSI製 P55Express チップセット
メモリ:DDR3-1333 2GB×2
グラボ:GeForce GTS250 512MB
ケース:BLACK タワー型ケース IW-C653
電源:600W(Max 700W)
ハードディスクドライブ:1TB Serial-ATAII (Cache32MB, 7200rpm)
光学式ドライブ:24倍速スーパーマルチドライブ [ブラックベゼル]
PCリサイクル:家庭系パソコン(PCリサイクル料金込み、回収再資源化料金不要)
保証:安心の1年間無償修理保証
カードリーダーライター有。

ちなみに、送料・手数料を抜けば10万円以下で収まりました。
買ったのはパソコン工房。
安いのは良かったけど、非常に梱包が雑。
発泡スチロールは割れてたし、正直あけて見てうんざりでした。
できれば、あまりここで買いたくないかも。。。

テーマ : Windows 7 ジャンル : コンピュータ

21:32  |  パソコン関連  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑

2010.01.24 (Sun)

python-twitter が import できない

windowsXPのPCにpython-twitterをインストールし、pyscripterにて動作の確認ができた。
windows7(64bit)のノートPCにもpython-twitterを入れて、pyscripterからimportできた。

だが、windowsVistaのPCでpython-twitterを使おうとしたら、python-twitterがインポートできない状態に。
但し、importできないのはpyscripterから。
普通にpythonのコンソールで直に

   >> import twitter

とすれば問題なくプログラムは実行できる。
だが、pyscripterでやっていこうと考えていたので何とかしたい。
windows7のPCは暫く使えない状態だし、WindowsXPはプログラミング用として使う気は全然無い。
プログラミングでメインとしてつかっているのがこのWindowsVistaの入っているPCなので、何とかしたい。

さて、では具体的にどうimportできないのか。
「import twitter」と入力すると、pkgutil.pyというファイル内の「importer = path_hook(path_item)」という行で次のようなエラーメッセージが出る。

   exceptions.UnicodeEncodeError: 'ascii' codec can't encode characters in position 18-24: ordinal not in range(128)

なんだか良くわからないが、状況から推察するに、pyscripterでimportするときの文字コードがよろしくないようだ。
対策は良くわからないのでもう少しいろいろ試してみる。



解決しました。
結果からいうと、ファイルフォーマットが悪かった。

うまくimportできなかった時は、[ファイル]⇒[新規作成]⇒[pythonモジュール]としてファイルを作成し、そこにプログラムを書いていた。
そして、保存するときに

  「asciiとして保存すると情報が失われる危険性があります

みたいな警告が出てきたのを無視して保存していた。
これがいけなかった。

ここでこの警告を無視したせいでpython-twitterAPIをimportできなくなってしまった模様。
解決するには、[編集]⇒[ファイルフォーマット]⇒[UTF-8]と設定した後でファイルを保存すれば、python-twitterをimportして実行することができるようになった。

Windows7やWindowsXPでは特に設定せずとも問題は無かったが、今使っているWindowsVistaでは違うらしい。

よし、これでPythonいじりを再開できる。



[2010/01/31:追記]
やはりどうも同じエラーが出ます。
確かに、一度は上の方法でimportできるようになったはずなのに、今はもうできない・・・
わけわかめ。

しょうがないので新しく届いたPCでやることにしました。
ホントはノートPCをプログラミング専用にしたかったんだけど。。。


テーマ : プログラミング ジャンル : コンピュータ

02:35  |  Python  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑

2010.01.23 (Sat)

python-twitterのインストール

Pythonでなんかしようと思い、とりあえずtwitterをいじってみようかと。
で、APIを探してみると「python-wtitter」なるものを発見。
WindowsXPにpython-twitterをインストールして、試しにプログラムからtitterにツイートしてみる。



[インストール]

まず、python-wtitterから最新版のpython-twitterをダウンロードしてくる。
.tar.gzの圧縮ファイルなので、LhaPlusなどで解凍。
フォルダ内に「setup.py」というそれらしきファイルがあるので、Windowsのコマンドプロンプト上から

   $ setup.py build
   $ setup.py install

を実行。

   $ setup.py test

で正しくインストールされたか確認できるぽい。
一応、実行したら 「OK」 がちらほらと見えました。
「setup.py install」を実行したとき、ログに「easy-install」という文字が見えたので、easy-install入れてないとダメかも?

LINUXでは apt-get なり yum などのパッケージが用意されているみたいなので、もっと簡単にインストールできそう。
まぁ、Windowsのインストールもお手軽だけど。

次はテストプログラム。



[サンプルプログラム]

#coding: utf-8
import twitter
my_api = twitter.Api("AccountName", "Password")
status = my_api.PostUpdate(u"テストカキコ")



ちゃんと書き込めました。
ちょっとしたプログラムでも感動。
さて、これから何をするかな・・・

Memo : ドキュメント





追記 (2010/09/29) :
import twitter で twitter が見つかりませんというエラーが出た場合、simplejson が入ってない可能性があります。
simplejson をインストールしてやればうまくいくかも・・・?


テーマ : プログラミング ジャンル : コンピュータ

15:49  |  Python  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑

2010.01.11 (Mon)

Python2.6 基礎知識メモ

らんま1/2を読んでいてすっかり放置だったPython勉強。
忘れたときのために軽いメモ。
基本的にPythonStudyRoomを参考にして、まとめる感じになると思う。



・型
Pythonには数値・実数・文字列以外に、コレクションといういくつかの型がある。
 (1).リスト
   もっとも基本的なデータ構造の一つ。
   「[」と「]」で囲んだ数値や文字列をリスト表現する。
   要素は「,」によって区切り、様々な型を入れることができる。
   「append(追加する要素)」によって要素を追加。
   「remove(削除するインデックス)」で指定したインデックスの要素を削除。
   「del リスト名」で指定したリストを削除。
   ほか、関数いろいろ。参照
   ただし、リスト内の日本語はUnicodeが表示されてしまう。
   日本語の時は、forなどで一つずつ表示させるしかないのかも。

   sample) list=[1,1,2,3,5,8,13,21]
       print list
       list.append("別の型を混ぜられる")
       print list
       list[8] = ["値の変更", "入れ子も可能"]
       print list
       del list
     
   result) [1, 1, 2, 3, 5, 8, 13, 21]
       [1, 1, 2, 3, 5, 8, 13, 21, '\u5225\u306e\u578b\u3092\u6df7\u305c\u3089\u308c\u308b']
       [1, 1, 2, 3, 5, 8, 13, 21, ['\u5024\u306e\u5909\u66f4', u'\u5165\u308c\u5b50\u3082\u53ef\u80fd']]

 (2).タプル
   リストとは違い、作成した時の値を変更したり追加、削除することはできない。
   「(」と「)」で表現し、「,」で要素を区切る。
   それ以外は基本的にリストと同様。

   sample) tuple = ("tuple", ["list"])
       print tuple
       tuple[1].append("Add")
       print tuple

   result) ('tuple', ['list'])
       ('tuple', ['list', 'Add'])

 (3).辞書
   ハッシュぽいデータ型。
   キーと値から成る。
   「{」と「}」で表現され、各データは「,」で区切る。また、「:」によってキーと値を区切る。

   sample) dict = {"first":123, "second":456, "third":789}
       print dict
       print dict["second"]

   result) {'second': 456, 'third': 789, 'first': 123}
       456





・文字列処理
 1.表現:シングルクォートかダブルクォートで囲った部分が文字列とみなされる。
   ex) '文字列1' "文字列2"

 2.連結:「+」を使うことで連結可能。
   ex) "文字列の" + "連結"

 3.抽出:文字列の後に「[」と「]」で抜き出す文字のインデックスを指定することで可能。
    負の値でも指定できる。先頭インデックスは0。
    [開始位置:終了位置]

   sample) u"文字列の抽出"[4:-1]
       u"指定しないと最後まで"[6:]

   result) 抽出
       最後まで

 4.反復:「*」を使うことで、指定した回数分だけ文字列を連結する。
   sample) u"反復"*5

   result) 反復反復反復反復反復





・制御構文
  省略。
  さして説明するほど独特なことはないと思う。




・関数
Pythonの関数では、戻り値を複数返すことができる。
注意が必要なのは、関数から直接返ってくるのはタプル型ということ。
記述の仕方は「 def 関数名(引数, 引数, ...): 」
デフォルト引数・キーワード引数可能。

sample)
def plus_minus_mult(a, b):
return a + b, a - b, a * b
print plus_minus_mult(15, 5)
c, d, e = plus_minus_mult(15, 5)
print c, d, e

result)
(20,10,75)
20,10,75




・global変数とlocal変数
ちゃんとlocal変数の概念があるらしい。
関数内からglobal変数にアクセスする場合は、「global 変数名」とする。
ただし、関数に引数として渡すリストに関しては、ローカル変数にはならないらしい。
リストは参照型の様に考えればいいのかな。
タプルに入れたリストも変更可能だし。

sample) def func(a):
    global g_var
    g_var = a * 2
    return g_var
  g_var = 5
  print func(g_var)
  print g_var

result) 10
    10





どうせならCGIもやりたいのぅ。
アップするサーバないけど。
友達に借りようか。。。
研究室の借りるか・・・。
どうするか。

テーマ : プログラミング ジャンル : コンピュータ

14:56  |  Python  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑
 | BLOGTOP | 

 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。