ブログトップ 記事一覧 ログイン 無料ブログ開設

試験運用中なLinux備忘録 RSSフィード

2008/04/11 (Fri)

Pythonの基本的なメモ集(del文・条件分岐・辞書・タプル/例外/関数の例)

del文

del文では定義済みの変数を未定義にできる。

#! /usr/bin/python

a = 1
print a  # 1
del a
#print a  # NameError: name 'a' is not defined

より詳しくは

http://www.python.jp/doc/release/ref/del.html

に書かれているが、抽象的で意味がよく分からなかった。

条件分岐(if文)

  • if/elif/elseというキーワードはシェルスクリプトに近いが、行末に「:」を付ける点に注意
  • 条件のAND(かつ)/OR(もしくは)はそれぞれ「and」と「or」と記述
  • 「if a < b == c:」は、「a < b」かつ「b == c」
#! /usr/bin/python
# -*- encoding: utf-8 -*-

a = b = 1

if a == b:  # 最後にコロンを付ける(セミコロンではない)
  print "a == b"
if not a != b:  # 否定は「if not」(この例は「等しくない」の否定で「等しい」)
  print "not a != b"
if a == 0 or b == 0:  # 偽
  print "a == 0 or b == 0"
if a == 0 or b == 1:  # 真
  print "a == 0 or b == 1"
if a == 0 and b == 1:  # 偽
  print "a == 0 and b == 1"
if a == 1 and b == 1:  # 真
  print "a == 1 and b == 1"

if a == 0:
  pass
elif a == 1:  # シェルスクリプト同様「if - elif - elif - ... - else」
  print "a == 1"

if b == 0:
  pass
elif b == 2:
  pass
else:  # elseの後ろにもコロンは忘れずに
  print "else"

if a == b < 2:  # aとbが等しく、その値が2未満
  print "a == b < 2"

実行結果

a == b
not a != b
a == 0 or b == 1
a == 1 and b == 1
a == 1
else
a == b < 2

辞書の使用例

#! /usr/bin/python
# -*- encoding: utf-8 -*-

dic = { "pen"     : u"ペン".encode('utf-8'),
        "pencil"  : u"鉛筆".encode('utf-8'),
      }

# 個別に直接取り出す
print "pen -> %s\npencil -> %s" % (dic['pen'], dic['pencil'])

# それぞれのキー/値を全て処理して取り出す
for en, ja in dic.iteritems():
  print "%s <- %s" % (ja, en)

実行結果

pen -> ペン
pencil -> 鉛筆
鉛筆 <- pencil
ペン <- pen

iteritems()をfor文で使用すると、全てのキー/値に対してそれぞれ処理が行える。このfor文の書式はシェルスクリプトに近い。

ループのテクニックとして、他の高度な扱い方も

http://www.python.jp/doc/2.3.5/tut/node7.html#SECTION007500000000000000000

に紹介されている。

タプルの使用例

関数の戻り値に複数の値を含める場合の例。このコードは関数や例外処理の使用例も兼ねる。

#! /usr/bin/python
# -*- encoding: utf-8 -*-

def devide(a, b):
  """aをbで割り、0で割ったときにステータス部分にFalseが返る"""
  try:
    value = float(a) / float(b)
    status = True
  except ZeroDivisionError:  # 0で割ったときに出る例外
    value = None
    status = False
  return (status, value)

ret = devide(7, 2)  # ret[0], ret[1]のように取り出す
if ret[0]:  # 除算成功(ステータスがTrue)
  print "devide(7, 2): OK(%f)" % ret[1]  # 計算結果
else:
  print "devide(7, 2): NG"

(stat, val) = devide(1, 0)  # 分けて代入することもできる
if stat:
  print "devide(1, 0): OK(%f)" % val
else:  # 除算失敗
  print "devide(1, 0): NG"

実行結果

devide(7, 2): OK(3.500000)
devide(1, 0): NG

例外の処理に関しては

http://www.python.jp/doc/release/tut/node10.html#SECTION0010200000000000000000

を参照。

(2009/4/8)例外については下の関連記事にもまとめた。

関連記事:

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/kakurasan/20080411/p1
リンク元
カスタム検索

カテゴリ「メールマガジン」を除いた本ウェブログ上の文章は、クリエイティブ・コモンズ・ライセンス(表示-非営利-継承 2.1 日本)の下でライセンスされています(引用・転載されたものを除く)。
Creative Commons License

本ウェブログの表示につきましては、横幅1,000ピクセル以上を推奨します。
はじめに | お知らせ | 最新の記事 | 記事一覧 | プライバシーポリシー | 別館トップ | まとめドキュメント | ご意見・ご要望