Python勉強中 7

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}

たぶん。

Python勉強中 6

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


とりあえずチャプター2までは読了しました。

Python勉強中 5

文字列から検索文字列を探して、インデックスを返してくれる関数。
ちなみにインデックスは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勉強中 4

「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()を使うか使わないかでも結果が変わってくるらしい。

Python勉強中 3

タートルで図形を描くプログラムを試してみる。

from turtle import *

forward(100)
left(120)
forward(100)
left(120)
forward(100)

for i in range(6):
    forward(100)
    right(60)

これってファイルに書いて実行した場合は、プログラムが終了した途端に図形も消えてしまうのだけれど、表示させ続けるにはどうしたらいいんだろう。
ちょっと考えて最後に一文追加した。

input()

こうすれば入力待ち状態になるので図形が消えない!
これでいいのかどうかは分からない。

Python勉強中 2

簡単なことからはじめてみよう。
とりあえず文字列の変数を宣言して表示してみる。

>>> 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" for more information.

3.1のようです。
バージョンによる仕様の違いに気よつける、と。

Python勉強中 1

まずはPythonをインストールして、インタラクティブシェル(対話型シェル)を使ってみました。インタラクティブシェルを使えば、対話形式でPythonの命令を打ち込んで、結果を確認する事ができます。ちょっとしたコードならすぐに試すことが出来るので、便利ですね。