LotosLabo

プログラミング技術とか気になった情報を載せていきます

Python言語について

f:id:lo25131:20140328022524j:plain


Pythonとは


シンプルで取得しやすいプログラミング言語です。シンプルの割には、オブジェクト指向型、関数型等の大規模な開発にも向いている。
よく、最初に習うプログラミング言語として使われることが多いでしょう。


開発環境


まずいつもどおりサイトに行きインストールします。

http://www.python.jp/download/

こちらの日本の公式サイトからでいいと思います。

今回はpython2ではなく、python3を使うので、3の最新バージョンを使います。

インストーラの手順に沿って行けば簡単にインストールできます。
環境変数も自動的にやってくれます。

インストールが終わったら、コマンドプロンプトより入ってるか確認します。


python と入力すれば、pythonが使用でき、バージョン情報もでます。


f:id:lo25131:20140328024153j:plain


終了するには exit() と入力します。


Hello Worldの出力


まずコマンド・ラインでの出力方法を紹介します。

python3ではpython2と違い、記述の仕方がかなりめんどくさくなりました。
私も学習している時に、python2の方で最初やっておりまして、
エラーの連続だったのでおかしいなと思い調べてみたら記述法が異なるということで、比較して紹介します。


python2
 >>> print "Hello World"

コレで出力出来ました。


python3
 >>> print ("Hello World")

python3では()を付けなければならなくなりました。


f:id:lo25131:20140328025131j:plain
()なしではエラーが起きています。



書き方


(例)

hello.py

print("Hello World")


【エディタ画面】
f:id:lo25131:20140328030020j:plain

【コンソール画面】出力結果
f:id:lo25131:20140328030217j:plain


と、こんなかんじでやっていきます。


日本語を使う

pythonで日本語を使う際にはちょっとめんどくさい方法を取らなければいけません。

プログラムの文頭に

#coding: Shift-JIS 

を記述する必要があります。
これは使う、使わないにしてもこれは入れておいたほうがいいかと思います。

またこれだけではエラーになってしまうので、日本語を使う際には、

こう書いていきます。

#coding: Shift-JIS

print (u"こんにちは")

日本語の前に u というのを入れます。

コレを入れることで日本語を出力することが出来ます。

基本構文


【コメント】

#コメントになる


【出力】

print("abcde")


【型の種類】

データ型
数値型
真偽値型
文字列型
リスト型
タプル
セット
辞書

とかいろいろあります。


【数値型】

整数、小数、複素数

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


print(10 * 5)
print(10 + 3)
print(10 % 3)
print(2 ** 3) // べき乗

文字列型


print("hello" + "world")

print('hello\n world')


'' シングルクォーテションの場合は文字列内に \n等エスケープシーケンスを入れられる。


ヒアドキュメント

print("""<html>
<body>
</body>
</html>""")


中身がそのまま出力される


複数出力

print("abc" * 10)

abcが10個出力されます。



【文字列の処理】

len,find,

len 文字数を調べる
find 文字を検索  文字を切り出す


例:

s = "abcdefg"
print(len(s))  //文字数を調べる
print(s.find("c"))  // cを検索
print(s[2])  // 2番目(左から3番目)を出力
print(s[2:5])  // 2番目(左から3番目)から5番目(こちらは左から5番目)まで
print(s[2:-1])  //2番目から後ろから1番目まで



【数値と文字列の相互変換】

数値 <> 文字列

文字列 → 数値 int float
数値 → 文字列 str


(例)
print(5 + int("5"))

出力:
10


(例)
print(5 + float("5"))

出力:
10.0


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

出力:
i am20years old!



【リスト型】

配列

sales = [255,100,353,400,'aba']

数字だけでなく文字列も入れられる



例: 配列の要素数

print(len(sales))

出力:
5


例: 配列の要素指定

print(sales[2])

出力:
353


例: 含まれているか検索

print(100 in sales)

出力:
True


●リストの操作


例: 小さい順番に並び替える

sales = [50, 100, 80, 45]
sales.sort()
print(sales)


例: 大きい順番に並び替える

sales = [50, 100, 80, 45]
sales.reverse()
print(sales)


例: 取り除く

d = "2013/12/15"
print(d.split("/"))

出力:
['2013', '12', '15']



例: 挿入する

a = ["a", "b", "c"]
print("-".join(a))

出力:
a-b-c



【タプル】

ほとんどリストと同じ
しかし、要素の変更ができません。

a[2] = 10

というのが使えません。


例:

a = (2,5,8)

print(len(a)) //要素数
print(a * 3) // それぞれ3つ出力


またタプルとリストはそれぞれ変換が可能になっています。

b = list(a)

a = tuple(b)



セット

集合型であり、重複を許さないという特性があります。

例:

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


差集合
print(a - b)


和集合
print(a | b)


積集合
print(a & b)


どちらかにしかないもの
print(a ^ b)


辞書型


例:

sales = {"lotos":200,"kousi":300,"satou":500}
print(sales)


出力結果:
{'lotos': 200, 'satou': 500, 'kousi': 300}

しかし順番はバラバラである。


例:値にアクセス

sales = {"lotos":200,"kousi":300,"satou":500}
print(sales["lotos"])


例:値を変える

sales = {"lotos":200,"kousi":300,"satou":500}
sales["lotos"] = 800


例:キーを検索

sales = {"lotos":200,"kousi":300,"satou":500}
print("lotos" in sales)


例:それぞれ一覧の表示

sales = {"lotos":200,"kousi":300,"satou":500}
print(sales.keys()) //キーの表示
print(sales.values()) //値の表示
print(sales.items()) // 両方の表示


条件分岐

if文

例: ifのみ

score = 70
if score > 60:
	print("ok")
	print("OOK")


例: elseあり

score = 40
if score > 60:
	print("ok")
else:
	print("ng")


例: else if

score = 40
if score > 60:
	print("ok")
elif score > 40:
	print("ng")
else
	print("Oo")


例: 特殊なif

score = 40
print("OK" if score > 60 else "NG")



比較演算子


 > < >= <= == !=

論理演算子

and or not

if score > 60 and score < 80

もしくは
if 60 < score < 80:

for文


例:

sales = [13,34,31,23]
for sale in sales:
	print(sale)


例: forループによる合計

sales = [13,34,31,23]
sum = 0
for sale in sales:
	sum += sale
else:
 	print(sum)


例: 0から10まで表示

for i in range(10):
	print(i)


while文


例: 0から9まで

n = 0
while n <  10:
	print(n)
	n += 1



関数とは

例:

def hello():
	print("hello")
hello()


例: 引数を取る

def hello(name, num = 3):
	print("hello %s" % name)
hello("tom",2)
hello("steve",3)



変数のスコープ

例:

name = "lotos"
def hello():
	name = "kouji"
print(name)



関数内で値を変更しても関数外に出れば値は戻ります。

オブジェクト(変数と関数をまとめて作る)
クラス(オブジェクトの設計図)
インスタンス(クラスを実体化したもの)


例: クラスを作る

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()