Overfiction

本とデジタルガジェットの感想を好きに語る

【独習】『プログラミング超初心者が初心者になるためのPython入門(2)』【後編】

f:id:yukitan_i:20170711192037j:plain

なんとなく雰囲気でPythonを勉強する企画の続き。

今回も プログラミング超初心者が初心者になるためのPython入門(2) リスト・タプル・ディクショナリ・if・for ループ編 を教材に使わせてもらってます。

それに追加して、紙書籍のしんせつなPython プログラミング超初心者が初心者になるための本も補助的に読みました。作者名が違うけど中の人たちはたぶん同じっぽい。「プログラミング超初心者が初心者になるための本」という売り文句も同じ。

「パソコンで文字を打てる人なら誰でも理解できます」と帯に書かれていて大変心強い。これなら俺でもいけるかもしれない。


len関数

文字列・リスト・タプル・ディクショナリの「長さ」を示す。

>>> print len("Hello World")  #文字列の場合
11
>>> print len(["a","b","c","d","e"])  #リストの場合
5

#rangeと組み合わせることで、ある文字列の長さを持つリストを作ることもできる。
>>> print range(len("abcde"))
[0, 1, 2, 3, 4]
round関数とabs関数

四捨五入するヤツと、絶対値を示すヤツ。

#round
>>> print round(3.14)
3.0

>>> print round(5.56)
6.0

#abs
>>> print abs(255)
255

>>> print abs(-255)
255
True, False と演算子
>>> print type(True)
<type 'bool'>

ブール(ブーリアン)型。TrueとFalseの2種類がある。

>>> print 3 < 8
True
>>> print 3 > 8
False
>>> print 3 == 3  #両辺が同じかどうかを確認するときは「==」を使用
True
>>> print "abcd" == "abcd"
True

Pythonでは「in」も演算子として扱われる。

>>> print "a" in "abcd"          
True

>>> print "a" in ["a","b","c","d"]
True

>>> print "a" in {"a":"apple","b":"ball","c":"cat"}  #has_keyメソッドの代用になる
True
演算子 and or not
#and
>>> print 0==0 and 1==1  #両方が正の場合
True

>>> print 0==0 and 1==99  #どちらか一方が偽の場合
False

>>> print 0==0 and 1==1 and 2==2  #三重判定
True

#or
>>> print 0==0 or 1==99  #どちらか一方が正の場合
True

>>> print 0==1 or 1==99  #両方ともに偽の場合
False

#not
>>> print not 1==1  #notのあとにあるTrueやFalseが逆になる
False

>>> print not 1==99
True

#複雑な演算子を組み合わせる場合は括弧を使うとよい
>>> print (1==1 or 1==99) and 0==0
True
ifの基礎
>>> if 4 > 2:
...     print "Hello"
... 
Hello
  • ifのあとのコロン(:)は必須
  • 実行したいコマンドの前にはインデントが必要
    • スペースの数はいくつでもよい。が、
    • スペースの数をそろえる必要がある。
    • タブでもよい。
#下記の書き方でも同じ意味になる
>>> if True :
...     print "Hello"
... 
Hello

#数字の1,0もTrue,Falseと同じ意味になる
>>> if 1 :
...     print "Hello"
... 
Hello
elif, else

elif = あるいはもし…であれば、
else = それ以外の場合は、

>>> if 1 > 2:
...     print "Hello"  #Falseなので実行されない
... elif 2 > 1:
...     print "World"  #Trueなので実行される
... 
World

#最初の式がTrueだった場合
>>> if 1 > 0:
...     print "Hello"  #Trueなので実行される
... elif 2 > 1: 
...     print "World"  #無視される
... 
Hello

#elifは複数続けることもできる
>>> if False:
...     print "Hello"
... elif False:
...     print "Beautiful"
... elif True:
...     print "World"
... 
World

#elseは、それまでの条件が満たされないときに無条件で実行される。
>>> if False:
...     print "Hello"
... elif False:
...     print "Beautiful"
... else:
...     print "World"
... 
World
forループの基礎

for (変数) in (繰り返してくれるもの):
(実行したいコマンド)

繰り返してくれるものは、文字列・リスト・タプル・ディクショナリ(シーケンス型)

>>> for i in [1,2,3,4,5]:
...     print i
... 
1
2
3
4
5

#入れ子にして書くとこんな感じ
>>> for i in "abc":
...     for j in "ABC":
...         print i,j
... 
a A
a B
a C
b A
b B
b C
c A
c B
c C

>>> for i in range(20):
...     print "無駄",  #実行する命令にiが含まれている必要はない
... 
無駄 無駄 無駄 無駄 無駄 無駄 無駄 無駄 無駄 無駄 無駄 無駄 無駄 無駄 無駄 無駄 無駄 無駄 無駄 無駄

ディクショナリに対するforループ

ディクショナリに対してforループを実行すると、自動的にkeysメソッドが実行されて(ディクショナリのキーのリストが作成されて)、ループが実行される。

>>> for i in {"a":"apple","b":"ball","c":"cat"}:
...     print i,  #末尾にカンマを入れると改行の代わりに半角スペースが入る
... 
a c b

#以下のように書き換えることができる
>>> x =  {"a":"apple","b":"ball","c":"cat"}
>>> for i in x.keys():
...     print i,
... 
a c b

#対応した値を順番に取り出すこともできる
>>> x =  {"a":"apple","b":"ball","c":"cat"}
>>> for i in x:
...     print x[i], 
... 
apple cat ball

#valuesメソッドを使った場合
>>> x =  {"a":"apple","b":"ball","c":"cat"}
>>> for i in x.values():
...     print i,
... 
apple cat ball

#itemsメソッドを使った場合
>>> x =  {"a":"apple","b":"ball","c":"cat"}
>>> for i in x.items():
...     print i,
... 
('a', 'apple') ('c', 'cat') ('b', 'ball')
リスト内包表記

リストの中にforループが含まれるという形式。びっくり。

>>> print [i for i in "abcde"]  #コロンは要らないらしい
['a', 'b', 'c', 'd', 'e']

#これと同じ処理
>>> x = []   #空のリストを作って
>>> for i in "abcde":
...     x.append(i)  #要素を1個ずつ足していく
... 
>>> print x
['a', 'b', 'c', 'd', 'e']

#変数iに対する操作まで含めて記述できる
>>> print [i+i for i in "abcde"] 
['aa', 'bb', 'cc', 'dd', 'ee']

>>> print [i*100 for i in [1,2,3,4,5]]
[100, 200, 300, 400, 500]

>>> print [i*5 for i in range(5)]
[0, 5, 10, 15, 20]

さすがにこれは超初心者には難しいッス。すぐに使えるようにはならなくて良いとのこと。プログラミングってもしかしてバカには向いてないのか…!?

whileループ

条件を満たしている間、処理を繰り返す。

>>> i = 0
>>> while i < 5:
...     print i
...     i = i+1
... 
0
1
2
3
4
うっかり無限ループを動かしてしまった場合

[Ctrl] + [C]で強制中断する。

簡単なモジュールの使い方 import

標準ライブラリからmathモジュールを組みこむ

>>> import math
>>> print math.pi  #定数piを表示
3.14159265359

>>> import math
>>> print math.ceil(3.1)  #ceil(切り上げ)
4.0
>>> print math.floor(4.9)  #floor(切り下げ)
4.0
# ceilは天井、floorは床。わかりやすい。

モジュール内の必要な変数や関数だけをピンポイントで読み込むこともできる。

fromステートメント
「from モジュール import 変数」

>>> from math import pi
>>> print pi
3.14159265359

#まとめて全部読み込んだりもできる
>>> from math import *
>>> print pi
3.14159265359

この方法で読み込んだ場合は、math.pi のような書き方はできなくなるので注意。

sysモジュール

pathが通っているディレクトリを表示する場合

>>> from sys import path
>>> print path

importするためのpythonファイルは、この実行結果に含まれるディレクトリのどこかに入ってないとダメ。

標準ライブラリ

Pythonの標準ライブラリはここに掲載されている。

Python 標準ライブラリ — Python 2.7.13 ドキュメント


ここまでで『超初心者が初心者に(2)』の内容は終了。『しんせつなPython』ではだいたい12章くらいまで。

ド素人の俺でもなんとなく雰囲気で理解できたような気がしている。引き続きがんばりたい。

しんせつなPython プログラミング超初心者が初心者になるための本

しんせつなPython プログラミング超初心者が初心者になるための本