Pythonチュートリアル動画でPythonの復習

Pythonのチュートリアル動画がYoutubeにあったので,復習を兼ねて真面目にメモと手を動かしつつやってみました.全部で43個のチュートリアルがあり,全部みると4時間弱かかっちゃいますが,復習にはもってこいの内容かと思います.

もちろん初めての人にとってのチュートリアルとしても良いかと.これを全部やった後に『初めてのPython』を読むと理解が進むように思います.あの本はとても丁寧に書かれていて面白いのですが,分厚いので心が折れてしまう可能性も高いですしw

Tutorial 1 Installing

インストールの仕方とGUIについて.ここは見なくても良いかもしれませんね.

Tutorial 2 Numbers and Math

プログラミングの基本となる数値の扱いと四則演算について.指数の書き方が6^3ではなく,6**3と書くあたりを気をつけたい.

Tutorial 3 Variables

変数の扱いも基本ですね.input()関数を使って入力もできる.

Tutorial 4 Modules and Functions

関数の使い方.pow()やabs()など.また,mathモジュールのインポートには

import math

と書く.これにより,math.floor()やmath.sqrt()のような関数が利用可能となる.また

bucky = math.sqrt

と書けば,関数名を変更可能.ただ,これはあまり多用しない方がいい気がする.

Tutorial 5 How to Save Your Programs

プログラムの保存の仕方やコマンドプロンプトでプログラムを呼び出す方法など.最後に

raw_input("Press<enter>")

を入れるあたりが小っちゃいけどポイントかと.

Tutorial 6 Strings

''でも""でも文字列を表すが,""の方が文中に'が入る場合に望ましい.または\(バックスラッシュ)でエスケープする.これは文中に"が入る場合も同じ.

"bucky said, \"hey now\" to me"

あとは

a = "bucky"
b = "roberts"

とすると

>>> a + b
'buckyroberts'
>>> a, b
('bucky', 'roberts')

となる.

Tutorial 7 More on Strings

StringsとNumbersは繋ぐことができないので,数値はstr()で文字にする必要がある.

Tutorial 8 Raw Input

input()とraw_input()の違いについて.文字列をinput()で受け取るとエラーを吐くので,その場合はraw_input()を用いればよいという理解でいいのかな.python 2.xと3.xで違いもありそうだけどどうなんだろう.要チェック.

Tutorial 9 Sequences and Lists

リストの扱いなど.

family = ['mom', 'dad', 'bro', 'sis', 'dog']

としたとき

>>> family[3]
'sis'
>>> family[-2]
'sis'

Tutorial 10 Slicing

リスト内のスライシングについて.

example = [0,1,2,3,4,5,6,7,8,9]

のとき,

>>> example[4:9]
[4, 5, 6, 7, 8]

とexample[9]の要素は入らず,9未満を表す.また負の数を用いるときも

>>> example[-5:-1]
[5, 6, 7, 8]

のようにexample[-1]は含まれない.しかし,

>>> example[-5:0]
[]

では何も含まれない.このとき[5, 6, 7, 8, 9]が含まれるようにするには

>>> example[-5:]
[]

と書く必要がある.また3つ目のパラメータを用いて

>>> example[1:8:2]
[1,3,5,7]

と2つ飛ばしにすることもできる.

Tutorial 11 Editing Sequences

リストの結合と要素のチェックについて.

>>> name = 'roastbeef'
>>> 'z' in name
False
>>> 'r' in name
True

Tutorial 12 More List Functions

len()はListの長さを,max()やmin()は最大値・最小値を,delでリスト内の要素を除去することができる.

Tutorial 13 Slicing Lists

スライシングを使ってリスト内に追加したり,リスト内の要素を削除したりする個tができる.

Tutorial 14 Intro to Methods

appendで要素の追加,extendでリストの結合ができる.

face = [21, 18, 30]
face.append(45)
one = [1, 2,3]
two =[4,5,6]
one.extend(two)

Tutorial 15 More Methods

何番目の要素かはindexメソッドを用いる.popメソッドでは取り出してリストから取り除く.removeメソッドは単純に取り除く.reverseメソッドはリストの順序を逆にする.

Tutorial 16 Sort and Tuples

sortメソッドで小さい順にソート出来る.またリストと異なりタプルは入れ替え不能.

Tutorial 17 Strings n Stuff

文字列内の変数展開についてはsprintfみたいな感じにできる.
bucky = "Hey there %s, hows your %s"
verb = ('betty', 'foot')
print bucky % verb

Tutorial 18 Cool String Methods

findメソッドで文字列内から別の文字列が何番目に存在するのか,joinメソッドではリストを接続する,lower,upperメソッドでは文字列を小文字・大文字に変換できる,replaceメソッドではある文字列を別の文字列に置換できる.

Tutorial 19 Dictionary

ディクショナリーについて.データ構造の基本ですね.

book = {'Dad':'Bob', 'Mom':'Lisa', 'Bro':'Joe'}
ages = {'Dad':'42', 'Mom':'87'}

とすれば

>>> book['Dad']
'Bob'
>>> ages['Dad']
'42'

とできます.

Tutorial 20 If Statement

if文の書き方とPython固有のインデントについて.

Tutorial 21 else and elif

こんな感じで条件分岐を書く.

fish = "tuna"
if fish=="bass":
    print 'this is a bass alright'
elif fish=="slamon":
    print "I hope i dont get SLAMonilla poissnin"
elif fish=='tuna':
    print "easy there tuna boat"
else:
    print 'i dont know what this is'

Tutorial 22 Nesting Statemens

If文のnestの書き方について.

thing = "animal"
animal = "cat"

if thing == "animal":
    if animal == "cat":
        print "this is a cat"
    else:
        print "i dont know ehat this animal is"
else:
    print 'i dont know what this thing is'

Tutorial 23 Comparison Operators

比較演算子について.ここはそんなに新しい点はないかなー.

Tutorial 24 And and Or

And, Orは次のように扱う.

example = 5
if example > 3 and example < 10:
	print 'numer is between 3 and 10'
else:
	print 'no'
if example > 3 or example < 4:
	print 'this works'
else:
	print 'no'

Tutorial 25 For and While Loops

for文やwhile文の書き方について.

b = 1
while b <= 10:
	print b
	b += 1
gl = ['bread', 'milk', 'meat', 'beef']
for food in gl:
	print 'I want ' + food

Tutorial 26 Infinite Loops and Break

ディクショナリにおけるループの書き方やbreak文について.

ages={'dad':42, 'mom':48, 'lisa':7}
for item in ages:
	print item,ages[item]
while 1:
	name = raw_input('Enter name: ')
	if name == 'quit': break

Tutorial 27 Building Functions

以下のように関数定義をする.

def plusten(y):
	return y + 10
def diagonal(x,y):
	return math.sqrt(x**2 + y**2)

Tutorial 28 Default Parameters

関数のデフォルト値を入れておく.

def name(first='tom', last='smith'):
	print '%s %s' % (first, last)

Tutorial 29 Multiple Parameters

複数以上のパラメータを取る場合.以下のように書く.

def profile(name, *ages):
	print name
	print ages
>>> profile('bucky', 42,43,76,98)
bucky
(42, 43, 76, 98)

Tutorial 30 Parameter Types

このように書くとディクショナリをつくることができる.

def cart(**items):
	print items
>>> cart(apple=4,peaches=6,beef=60)
{'peaches': 6, 'apple': 4, 'beef': 60}

Tutorial 31 Tuples as Parameters

タプルやディクショナリを引数にとるときは*や**が必要.

def example(a, b, c):
	return a+b*c

>>> tuna=(5,7,3)
>>> example(*tuna)
26
def example2(**this):
	print this

>>> bacon={'mom':32, 'dad':54}
>>> example2(bacon)
{'dad': 54, 'mom': 32}

Tutorial 32 Object Oriented Program

オブジェクト指向プログラミングについて.クラスは次のようにつくる.

class exampleClass:
	eyes="blue"
	age=22
	def thisMethod(self):
		return 'hey this method worked'

具体的なオブジェクトの扱いは

>>> exampleObject=exampleClass()
>>> exampleObject.eyes
'blue'
>>> exampleObject.age
22
>>> exampleObject.thisMethod()
'hey this method worked'

Tutorial 33 Classes and Self

引き続きクラスの作り方など.

class className:
	def createName(self,name):
		self.name=name
	def displayName(self):
		return self.name
	def saying(self):
		print "hello %s" % self.name
>>> first=className()
>>> second=className()
>>> first.createName('bucky')
>>> second.createName('tony')
>>> first.displayName()
'bucky'
>>> first.saying()
hello bucky

Tutorial 34 Subclasses Superclasses

サブクラスとスーパークラス.これは他のオブジェクト指向と同じですね.

class parentClass:
	var1 = "i am var1"
	var2 = "i am var2"
class childClass(parentClass):
	var3 = "i am var3"
>>> parentObject=parentClass()
>>> parentObject.var1
'i am var1'
>>> childObject=childClass()
>>> childObject.var1
'i am var1'
>>> childObject.var3
'i am var3'

Tutorial 35 Overwrite Variable on Sub

サブクラスによる変数の上書き.

class parent:
	var1 ="bacon"
	var2 ="sausage"
class child(parent):
	var2 ="toast"
>>> cob=child()
>>> cob.var2
'toast'

Tutorial 36 Multiple Parent Classes

複数のクラスを継承することも可能.

class Mom:
	var1 ="hey im mom"
class Dad:
	var2 ="hey there son im a dad"
class child(Mom,Dad):
	var3 = "im a new variable"

>>> childObject=child()
>>> childObject.var1
'hey im mom'
>>> childObject.var2
'hey there son im a dad'
>>> childObject.var3
'im a new variable'

Tutorial 37 Constructors

コンストラクタについて.def __init__と書く必要がある.

class new:
	def __init__(self):
		print "this is a constructor"
		print "this also print out"
>>> newobj=new()
this is a constructor
this also print out

Tutorial 38 Import Modules

自分で作ったモジュールをインポートする方法など.C:/Python27/以下にmodule.py等のファイル名で保存し,import moduleでインポートする.

Tutorial 39 reload Modules

インポートしたモジュールの内容が途中で更新された場合,同様にimportで読み込むだけではモジュールの内容が更新されないので,その場合はreload(module)する必要がある.

Tutorial 40 Getting Module Info

dir(math)でmathモジュールの中身を,help(math)でヘルプファイルを,math.__doc__で簡単な内容を知ることができる.

Tutoriak 41 Working with Files

ファイルの読み書きについて.プログラミングにおいて最も重要な項目の一つではないかと思う.大抵の処理はデータの読み書きを必ず行うことになるので.

fob=open('C:/a.txt', 'w')
fob.write('hey now broen cow')
fob.close()
fob=open('C:/a.txt', 'r')
>>> fob.read(3)
'hey'
>>> fob.read()
' now broen cow'
>>> fob.read()
''
>>> fob.close()

Tutorial 42 Reading and Writing

ファイルの読み書きについてパート2,readline()で1行ずつ読む.readlines()で全行読む.

Tutorial 43 Writing Lines

writelines()メソッドで行ごと出力することができる.

全部見てやってみた感想

全体を復習するにはちょうどいいし,特に初めてPythonを触るにはちょうどいいのかもしれない.オブジェクト指向のところも少ない時間ながらわかりやすく説明してくれている.もう少し丁寧に扱って欲しいのはファイルの扱いやNumpyのような拡張モジュールの導入の仕方などかな.あとは『初めてのPython』や『みんなのPython』,またはPythonドキュメントを読みましょう.