Help us understand the problem. What is going on with this article?

Pythonの基礎の基礎の基礎

More than 3 years have passed since last update.

前書き

筆者は、Python初心者です。覚書程度に書いているので、ご了承ください。

間違いがあれば、コメント欄にてご指摘お願いします。

自己紹介

Twitter @konojunya

じゅんじゅんというニックネームで、関西を拠点に活動しているフロントエンドエンジニアです。

HAL大阪の新2回生です👍 (2016.4.24現在)

よくstart up系イベントに行くので、大阪らへんの方は会いましょう!

では、早速。

初めてのPython

順番に進めていきます!

環境

僕はMacなので、元からPythonは入っていましたが、インストールしなおしました。

Pythonには、2系。3系などありますが、僕はv2.7.11なので、2系の書き方になります。

少し3とは、違うようなので、記事のまま動かしたい場合は、Python 2.xをインストールしてください。

Pythonインストール(Mac編)

僕はこのhomebrewを使ったインストール方法でインストールしました。

windows環境へのpythonインストール

pythonの拡張子は、複数ありそれぞれ、意味がありますが今回は.pyだけで学習を進めたいと思います。

なお、一番最初にutf-8で書くぜ!と宣言しているほうがいいので、

index.py
# coding: UTF-8

#insert code...

Pythonはインストールすると、会話的に実行することも可能です。

コマンドラインで、pythonと打つと、そこに式などを書いてすぐに実行結果を試すことができます。

終えるときはexit()とすると、その状態から抜けることができます。

変数

pythonでは、変数を作ることができます。

C言語やJavaのような、intとかstringとか、

javascriptやPHPのように、varも$も必要ありません。

index.py
msg = "Hello World"
print msg # Hello World

このように変数を使うことができます。

printというのは、そのものをコンソール上に展開して表示してくれるものです。

ここで登場したのが、代入演算子です。

ここでは=が登場していますが、数学的なイコールではないことに注意してください。

プログラミングにおいて、=は、「変数名と値を紐付ける、対応付ける」というものです。

では、代入演算子はどのようなものがあるのでしょうか。

index.py
a = b         # a に b を代入する
a += b        # a = a + b に同じ
a -= b        # a = a - b に同じ
a *= b        # a = a * b に同じ
a /= b        # a = a / b に同じ
a %= b        # a = a % b に同じ
a **= b       # a = a ** b に同じ
a //= b       # a = a // b に同じ
a &= b        # a = a & b に同じ
a |= b        # a = a | b に同じ
a ^= b        # a = a ^ b に同じ
a <<= b       # a = a << b に同じ
a >>= b       # a = a >> b に同じ

Pythonでは、単項演算子がありません。

なので、C言語やJavaのi++i+=1に置き換えてください。

簡単な計算もしてみましょう。

index.py
plus = 5 + 3
print plus # 8

このようなときに使う足し算や、引き算などの演算子を、代数演算子と言います。

代数演算子は以下のようなものがあります。

index.py
+a            # 正数
-a            # 負数
a + b         # 加算
a - b         # 減算
a * b         # 乗算
a / b         # 除算
a % b         # a を b で割った余り
a ** b        # a の b 乗
a // b        # 切り捨て除算

その他に、ビット演算子などもあります。

index.py
~a            # ビット反転
a & b         # AND:論理積(aもbも1のビットが1)
a | b         # OR:論理和(aまたはbが1のビットが1)
a ^ b         # XOR:排他的論理和(aまたはbが1のビットが1)
a << b        # b ビット左シフト
a >> b        # b ビット右シフト

などですね。

では、少数を交えた計算をしてみましょう

index.py
plus = 5 + 3.0
print plus # 8.0

今回は同じ5+3なのに、答えが8.0です。

これは、3を3.0と表記することで、少数になるので、

答えもその少数に合わした形になります。

では、日本語をprintしてみましょう

index.py
useless = u"無駄だ。"
print useless # 無駄だ。

日本語を扱うときの注意点で、日本語を扱うときは先頭にuをつけてください。

unicodeのuなんですが、これがないと後々、文字列の長さなどを上手く測れなくなってくるので、絶対につけるようにしてください。

文字列

さて、もう既にわかる人にはわかりますが、文字列です。

"ダブルクォーテーション"'シングルクォーテーション'で囲みます。

代入は上記の通りなんですが、エスケープについて覚えておきたいと思います。

index.py
print "Hello\nworld"

このように、\nをつけると改行してくれます

index.py
print """<html>
\t<body>
\t</body>
</html>"""

ダブルクォーテーション3つかシングルクォーテーション3つで囲って、改行しながら複数行の文字列を打つこともできます。
改行した個所に\nの改行文字があるものとして処理されます。

では、文字列に扱える便利なメソッドを見ていきます。

index.py
s = "abcdefg"
print len(s) # 7
print s.find("c") # 2

このように、文字列には便利なものが複数あります。

len()は、その文字列の長さを返します。findはその文字が何番目にあるかを返すので、

0から始まり、2となります。

文字列 <> 数値

文字列と数値を変えたい時が少々あったりします。

index.py
s = "123"
print s # "123"
print int(s) # 123

数値にするならint文字列にするならstrを使います。

リスト

似たようなデータを一つの変数で管理するリストについて勉強しましょう

リストは、つまり配列です。

index.py
colors = ["red","blue","green"]

print colors[0] # "red"

このように色を管理するcolorsというものを作りました。

中身を取り出すにはcolors[x]として、xには添字というものを入れてあげます。

配列の添字は1からではなく0からなので、colors[0]とすると、先頭の"red"を取得できます。

では、リストが扱える便利なメソッドを幾つか紹介したいと思います。

index.py
colors = ["red","blue","green"]

colors.reverse() 
print colors # ["green","blue","red"]

colors.sort()
print colors # ["blue", "green", "red"]

このように、ソートや逆順などはメソッドを使って簡単にできました!

タプル

タプルも配列ですが、リストとの大きな差は、後から変更できないという点です。

タプルは、定数の配列と思えばいいと思います。

定義の仕方ですが、

index.py
tp = ("kono","junya")

のように、()で表現しますが、

(4/26追記)

本来タプルは、

index.py
tp = "kono","junya"

とも、記述できます。

これは、,によって判別しているからです。

(end)

要素が1個のタプルは、優先演算の括弧と区別するために最後にカンマを指定します。

index.py
tp1 = ("kono",)

タプルは後から変更できないので、読み込みが少し高速になっていたりします。

では、どうしてもリストに変えたい時や、一時的にリストに変えたい時はどうすればいいのでしょうか。

その場合は

index.py
a = list(tp)
print a # ["kono","junya"]

listというもので囲めばいいです。では、あ〜〜やっぱりタプルっすわぁ〜〜となった時にどうするか。

index.py
b = tuple(a)
print b # ("kono","junya")

リストにするならlist、タプルならtupleただそれだけ。

辞書

先ほどのリストに似ていますが、リストの構成上、値を取り出しにくい点がありました。

そこで、先人たちは名前をつけるべく辞書というものを作ってくれました。

まぁ連想配列です。

index.py
#sales = {key:value}
sales = {"junya":100,"kono":40}

このように定義します。

では、辞書で使える便利なメソッドについても勉強していきましょう。

index.py
print sales.keys()     #['junya', 'kono']
print sales.values()   #[100, 40]
print sales.items()    #[('junya', 100), ('kono', 40)]

.keys()で、その辞書の全部のkeyを取得してくれます。

.values()で、全部の値を取得できます。

.items()で、その辞書自体を取得できます。

繰り返し処理

何回も処理を繰り返すためのループ文について、見ていきましょう。

よく使うのはfor文だと思います。

配列の要素分だけループしてくれます。

こんな感じ。

index.py
colors = ["red","blue","yellow"]

for color in colors:
  print color

colorには、colorsから順番に要素が代入されていきます。

では、100回ループするのを作りたい時は、100個の要素の配列を書かないといけないんでしょうか。。

いいえ。そんなことはありません。

rangeというものを使います。

これは、指定分の数字のリストを返してきてくれるものなんですが、いいように使ってやりましょう!

index.py
for i in range(100):
  print i

これで、100ループ間違いなし!!!!

次に、辞書の中身をループさせたいと思います。

書き方はこんな感じ

index.py
user = {"kono":100,"junya":40}

for key,value in user.iteritems():
  print key
for key in user.keys():
  print key

user.iteritemsでは、その辞書の中身がそれぞれkeyとvalueに入っています。

user.keys()を使うとkeyだけの取得もできます。

条件分岐

条件分岐は、ある特定の時にはこちらの処理など、分岐を与えるものです。

index.py
score = 60

if score < 40:
  print "OUT!"
elif score < 65:
  print "SOSO..."
else:
  print "Good!"

このように書けます。

他にも、条件を幾つか組み合わせたい時があると思います。

そんな時は

index.py
if score > 10 and score < 20:
  print "oh..."

のように、andで組み合わせることができます。

C言語やJavaの演算子が && => and,|| => or,! => not

になると思ってください。

なお、pythonでは、

index.py
if 10 < score < 20:
  print "oh..."

のように、書くこともできます!

また真偽のみならば、

index.py
score = 50

print "Good!" if score >= 60 else "NG!"

このように一行でスッキリ書くこともできます。

関数

では、処理をひとまとめにしておける関数について、勉強していきたいと思います。

関数の定義は

index.py
def hello():
  print "Hello"

hello() # Hello

defというキーワードを使って、関数を定義することが可能です。

では、引数についても見ていきましょう

index.py
def hello(name):
  print "hello %s"%name

hello("junya") #hello junya

%sなど見かけないものが出てきましたが、STRINGのsで、

%nameで指定したnameを%sに代入してくれます。

返り値についても見ていきましょう

index.py
def hello(name):
  return "Hello %s"%name

print hello("junya") #Hello junya

簡単ですね。

関数の最後にmapについて勉強したいと思います。

mapとは、リストにその関数を当て込んでいくもので、

index.py
def double(x):
  return x * x

print map(double,[2,5,8]) # [4, 25, 64]

このように便利に使えます。

この関数の部分ですが、この程度ならわざわざdoubleを作るのもめんどくさいので、

mapの中に書き込みたいと思います。

index.py
print map(lambda x:x*x,[2,5,8])

lambdaというキーワードを使い、xという名前をつけて、x*xをリストに当てていきます。

では、最後にクラスについて見ていきたいと思います。

クラス

クラス自体の説明としては、よく設計図などと言われたりします。

そのクラスを自作する時なんですが、

index.py
class User(object):
  def __init__(self,name):
    self.name = name
  def hello(self):
    print "hello %s"%self.name

ざっと書きました。

Userというclassを作り、括弧の中に親クラス(スーパークラス)を指定します。この例ではobjectクラスを親にしています。

コンストラクタは__init__という名前でメソッドを作ればできます。

引数に自分自身を表すselfを入れて、self.name = nameのように初期化します。

helloというメソッドも作ったので、見ていきましょう。

インスタンスする時は

index.py
bob = User("bob")
print bob.name    #bob
bob.hello()       #hello bob

newなどはつけないことに注意してください!

あとはそのままですね。

あとがき

今回はPythonの基礎の基礎の基礎を抑えてみました。

PHPの基礎の基礎の基礎も書いているので、良ければ見てちょ!

間違いなどのご指摘は、コメント欄でお願いします。

また、急な変更をしないといけない場合は、@konojunyaへよろしくお願いします!

次回はたぶんpythonを使ったTwitterAPIとかしてると思いますので、また見てください!

See you!

iotlt
IoT縛りの勉強会です。 毎月イベントを実施しているので是非遊びに来てください! 登壇者を中心にQiitaでも情報発信していきます。 https://iotlt.connpass.com
https://iotlt.connpass.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした