Overfiction

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

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

f:id:yukitan_i:20170701210311j:plain

プログラミングに関しては本当にド素人なんですけど、唐突に特に理由もなくPythonの勉強を始めようと思いました。すごいがんばってスクレイピングとかテキスト解析とかやったらすごくいいしモテそうだからがんばります。

教材として、まずは『 プログラミング超初心者が初心者になるためのPython入門(1) セットアップ・文字列・数値編 』という本を入手。すげえ、まさにド素人の俺のためにあるような本だ。Kindle版で250円ですが、オーナーライブラリーの対象商品なので、kindle端末を持ってたらタダでも読めます(2017年7月現在)。ありがたいです。


教材ではIDLEという統合開発環境がおすすめされてたんだけど、とりあえずウチのMacに最初から入ってたPythonを使うことにしました。面倒臭かったので。すみません。

対話型コマンドラインを使う
$ python
Python 2.7.10 (default, Oct 23 2015, 19:19:21) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

ウチの子には2.7系ってやつが入ってるらしい。教材でも2.7が使われてたのでちょうどよかった。しかし2.7系は2020年にサポートが終了するとのこと。マジか…

文字列を表示する(print)
>>> print "Hello World"
Hello World

まずは定番のHello World。

文字列と文字列をつなげてみる(join)
>>> print "Hello","World"
Hello World

カンマを使ってつなげた場合、HelloとWorldの間に、自動的に半角スペースが一つ入る。

>>> print "Hello"+"World"
HelloWorld

「+」を使ってつなげた場合、文字列の間にスペースは含まれない。

文字列をばらしてみる(Split)

メソッドという概念を使う。
メソッド=お尻につけると便利な働きをしてくれるコマンド。なるほど。

>>> print "Hello World".split(" ") 
['Hello', 'World']

>>> print "Hello World".split("e") #好きな文字で分割できる
['H', 'llo World']

>>> print "Hello World".split() #デフォルトでは半角スペースで分割
['Hello', 'World']
文字列を置き換えてみる(replace)
>>> print "Heloo World".replace("o","A")
HelAA WArld
文字列の大文字・小文字を変換してみる(upper, lower)
>>> print "Hello World".upper()
HELLO WORLD

>>> print "Hello World".lower()
hello world
メソッドを組み合わせてみる
>>> print "Hello World. I am Python".upper().split()
['HELLO', 'WORLD.', 'I', 'AM', 'PYTHON']
変数に文字列を入れてみる
>>> x = "Hello World"
>>> print x
Hello World
  • 変数名の間にスペースは入れられない
  • 変数名の最初の文字に数字は使えない
変数に入れた文字列を扱う
>>> x = "Good Morning"
>>> print x.upper()
GOOD MORNING
変数に変数を入れる
>>> x = "Good Morning"
>>> x= x.upper()
>>> print x
GOOD MORNING

>>> x = "Good Morning"
>>> y = x.upper()
>>> print y
GOOD MORNING
文字列操作 つなぐ、さがす、数える(join, find, count)
>>> x = "Hello World".split(" ")
>>> print x
['Hello', 'World']
>>> y = " ".join(x)
>>> print y
Hello World
半角スペース以外でつなぐ
>>> x = "Hello World".split(" ")
>>> print x
['Hello', 'World']
>>> y = "my".join(x)
>>> print y
HellomyWorld
文字列の中の特定の文字の場所を探す
>>> print "Hello World".find("e")
1

「e」は先頭から数えて2文字目だが、0,1,2,3…の順番でカウントするため、「1」という答えが返ってくる。

>>> print "Hello World".find("o")
4

「o」は文字列中に2個あるが、最初の「o」の位置を返してくる。

>>> print "Hello World".find("z")
-1

文字列中にない文字を検索すると、「-1」が返ってくる。

文字列の中の特定の文字の個数を数える
>>> print "Mississippi".count("s")
4

複数の文字列をひとつづきにして数えることも可能。

>>> print "Mississippi".count("ss")
2
文字列の一部を取り出す(インデクシング、スライシング)
>>> print "Hello World"[1]
e

>>> print "Hello World"[-5] #マイナスの数値を指定すると、後方から逆向きに数えて取り出してくる
W

>>> print "Hello World"[1:4]
ell

>>> print "Hello World"[:4]
Hell

>>> print "Hello World"[4:]
o World
文字列のメソッドを組み合わせてみる
>>> x = "Star Platinum the World"
>>> y = x.find("the")
>>> print "'the' starts on ",y
'the' starts on  14 #「the」は14(15)文字目
>>> print x[:y] # 14文字目未満の文字列を取り出す
Star Platinum 
コメントと日本語
>>> print "Hello" #this is comment
Hello

♯以降はコメントとして扱われる。

>>> print "Hello" #コメントです
Hello

なるべくコメントには日本語を使わないほうがよい(文字化けするから)。

外部のPythonファイルを実行して日本語を表示

test.pyというファイルをエディタで作成。

#coding:UTF-8
print "はろーたーみなる"

さっき作ったファイルをターミナルから実行。

$ python test.py
はろーたーみなる
データ型を調べる
>>> print type("Hello World")
<type 'str'> #文字列

>>> print type(1234)
<type 'int'> #整数型

>>> print type(129.3)
<type 'float'>  #浮動小数点数型

>>> x= 99
>>> print type(x)
<type 'int'>

変数を使った操作で動きがおかしい場合は、こまめにデータ型を確認しよう。

数値型で遊んでみる
>>> print 2 + 3 - 1
4

>>> print 2*8
16

>>> print 12/5 #intの場合
2

>>> print 12.0/5.0 #floatの場合
2.4

「+」「−」「*」「/」の間は半角を入れても入れなくてもどちらでもよい。

乗算は「*」を2個重ねる。

>>> print 2**4
16

文字列もいける。

>>> print "オラ"*50
オラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラ
変数にいれた文字列を成型して表示してみる(文字列フォーマット)
>>> print "I am {}.".format("John")
I am John.

>>> x = "John"
>>> y = "Yoko"
>>> print "I an {}. You are {}.".format(x,y)
I an John. You are Yoko.

数値でもOK。

>>> x = "John"
>>> y = 58
>>> print "I an {}. {} years old.".format(x,y)
I an John. 58 years old.

同じ変数を使い回す。

>>> x = "John"
>>> y = "Tokyo"
>>> print "This is {0}. {1} is {0}'s hometown.".format(x,y)
This is John. Tokyo is John's hometown.
もうひとつの文字列フォーマット
>>> x = "John"
>>> print "I am %s." %x
I am John.

>>> x = "John"
>>> y = "Yoko"
>>> print "I am %s. You are %s." %(x,y)
I am John. You are Yoko.

>>> x = "John"
>>> y = 58
>>> print "I am %s. %d years old." %(x,y)
I am John. 58 years old.

%dのdはdigit(数値)のd。

文字列を成型して表示してみる(改行、中央揃え、左寄せ、右寄せ)
>>> print "I am John. \nI am happy." #\nは改行記号
I am John. 
I am happy.

>>> print "THE MAN".center(30)
           THE MAN     

>>> print "THE MAN".rjust(30)
                       THE MAN

>>> print "THE MAN".ljust(30)
THE MAN   

今回の教材は「文字列・数値篇」ということで、ひとまずはこんな感じ。

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