Edited at

Python 基礎 まとめ

More than 3 years have passed since last update.


Pythonとは

シンプルで習得がしやすいオブジェクト指向型言語。

Google App Engineで採用されていたり、Djangoというフレームワークがある。


pythonの実行


  • インタラクティブモード

  • ファイルに書き込み実行
    の2点の実行方法がある。


インタラクティブモード

$python

と打つとインタラクティブモードになる。

python

>>>

ここに書き込めば、即時実行される。

以下のような感じ。

python

>>>print "hello world"

exit()

で抜けられる。


ファイルに書き込み実行


hello.py

print "hello world"


のようにファイルを作成して実行

$python hello.py


実行に際しての注意事項


  • 文を終わらせるときは改行。

  • #でコメントアウトになる。

  • 日本語を使うときは、ファイル先頭に#coding:UTF-8をファイルの最初に入れる。


変数

msg = "hello world"

print msg

でhello worldの出力。

大文字・小文字は別物として処理される。


データ型


数値型

整数、小数、複素数

演算子+ - * / // % **等

print 10 * 5 #50

print 10 // 3 #3
print 10% 3 #1
print 2**3 #8


  • 整数と小数の演算は小数になる

  • 整数同士の割り算は切り捨ての整数になる。(ただし、どちらか小数なら切り捨てはない)

  • 形式的に1.0をかけると切り捨てずに計算される。


文字列

“hello” ‘hello'のようにすれば文字列。

ただし、日本語の場合、u"こんにちは"のようにuを入れる。

"""でくくると改行が反映される

print """<html lnag="ja">

<body>
</body>
</html>"""


エスケープ

\t \n のようなエスケープが使用可能。


文字数 len, 検索 find, 切り出し []

s = "abcdefgh"

#文字列の長さ
print len(s)
#文字の位置
print s.find("c") #2 数えは0から
#文字の切り出し[番目:文字数]
print s[2] #c
print s[2:5] #cde
print s[:5] #abcde
print s[2:-1] #cdefgh


数値と文字列の相互変換

数値<>文字列

・文字列から数値へ変換 int float


print 5 + int("5") %10
print 5 + float("5") %10.0

・数値から文字列へ変換 str

age=20

print "i am" + str(age) + "years old!"


リスト


長さlen, 結合 +, 繰り返し *, 要素の取得 [], 要素の存在 in

sales = [255, 100, 353, 400]

print len(sales) #4 配列の長さを取り出す
print sales[1] #100 要素の取得
print sales + sales #配列の結合 [255, 100, 353, 400, 255, 100, 353, 400]
print sales *3 #配列の繰り返し [255, 100, 353, 400, 255, 100, 353, 400, 255, 100, 353, 400]
print 100 in sales #true in 要素の存在判定


range

配列作成

range(10) #[1,2,3,4,5,…8,9] 9まで

range(3, 10) #[3,4,5,…8,9] 3から9まで
range(3, 10, 2) #[3,5,7,9] 3から9まで2個とばし


リスト操作 sort, reverse, split, join

#小さい順に並び替える

sales.sort()
#リストを逆順にする
sales.reverse()
#文字列→リスト split
d = "2013/12/15"
print d.split("/") #['2013', '12', '15']
#リスト→文字列 join
a = ['a', 'b', 'c']
print '-'.join(a) #a-b-c


タプル

a=(2, 5, 8)のような感じ。

要素の中身が変更出来ないだけで、連結、繰り返しは出来る。

→変な間違いを防ぐ、計算速度を速くする。


タプルとリストの相互変換

#タプル→リスト

b = list(a)
#リスト→タプル
c = tuple(b)


セット

a = set([1, 2, 3, 4, 3, 2])

b = set([3, 4, 5])

要素の重複を許さない

print aは3, 2が重複し無視される。


集合型

#差集合

print a - b
#和集合
print a | b
#共通項だけ
print a & b
#片方にだけある項
print a ^ b


辞書型データ key value

[2505, 523, 500]

{"apple":200, "orange":300, "banana":500}
print sales; #順番は変わって表示される可能性がある
print sales["apple"] #200
sales["orange"] = 800 #値の変更
print sales #{'orange': 800, 'apple': 200, 'banana': 500}
print "orange" in sales #true 存在判定

print sales.keys() #key一覧
print sales.values() #value一覧
print sales.items() #key-value一覧


文字列にデータを埋め込む

a = 10

b = 1.232323
c = "apple"
d = {"orange":200, "banana":500}
print "age: %d" % a
print "age: %10d" % a #10桁
print "age: %010d" % a #10桁0で埋める
print "price: %f" % b
print "price: %.2f" % b
print "name: %s" % c

print "sales: %(orange)d" %d
print "%d and %f" % (a, b)


if文

scoe = 70

if score > 60:
print "ok!"
print "OK!"

#比較演算子 > < >= <= == !=
#論理演算子 and or not

if score > 60 and score < 80:
print "ok!"
print "OK!"

if 60 < score <80
print "ok!"
print "OK!"

score = 70
if score > 60:
print "ok!"
elif score > 40:
print "soso…"
else:
print "ng!"

print "OK!" if score > 60 else "NG!"


for文

sales = [13, 43, 4233, 2343]

for sale in sales:
sum += sale
else:
print sum

#*for文のelseでfor文を抜けた時に一回だけ実行する処理を書ける。

for i in range(10)
if i == 3:
continue #ループをスキップ
if i == 3:
break #ループを終了
print i
#0から9からまで。

for i in range(1, 101)
#処理
#iが1から100までループする


辞書型forループ

users = {"apple":200, "orange":300, "banana":500}

for key, value in users.iteritems()
print "key: %s value: %d" % (key, value)
for key, value in users.iterkeys()
print key
for value in users.itervalues()
print value


while文

n = 0

while n < 10
print n
n = n + 1
n += 1
else:
print "end"
#continue, break, elseはfor文と使い方は一緒。
#breakを使うとelse句も実行されない。


関数

def hello():

print "hello"
hello()

#引数
def hello(name, num = 3):
print "hello %s" %name * num
hello(name = "tom", num =2) #名前をつければ引数の順番は変えてもオーケー。
hello("steve")

def hello(name, num = 3):
return "hello %s" %name * num
s = hello("steve")
print s


変数とスコープ、pass

name = "apple"

def hello():
name = "orange"
print name

#pass
def hello2():
pass
#hello2という関数をとりあえず作っておいて、中身は空のときpassと書いておけばオーケー。
#他の言語だと、{}でくくれるために関数の終わりを示せるが、pythonでは終わりを示せないためにかわりにpassを書く。


map、lamdaーlistに対するアクション

#map ーリストの各要素に対して関数を実行させる

def double(x):
return x*x
print map(double, [2, 5, 8])

#lamda 無名関数 ーmap利用時に直接関数を使いたいときに使う
print map(lambda x:x*x, [2, 5, 8])


オブジェクトの作成

オブジェクト(変数と関数をまとめたもの)

クラス:オブジェクトの設計図

インスタンス:クラスを実体化したもの

class User(object):

def __init__(self, name):
self.name = name
def greet(self):
print "my name is %s" % self.name

bob = User("Bob")
tom = User("Tom")
print bob.name
bob.greet()
tom.greet()


クラスの継承

class SuperUser (User):

def shout(self):
print :"%s is SuPER!" % self.name

tom = SuperUser("Tom")
tom.shout()


モジュールの利用

import math, random

from datetime import date
print math.ceil(5.2) #6.0
for i in range(5)
print random.random()
print date.today()


参考

ドットインストールPython入門