Python & Raspberry Pi 開発ブログ ☆彡

Raspberry Pi 3の使い方、設定をわかりやすく解説。Raspberry Pi3 Model B(Element14版)、Raspbianを使用して開発中。

【スポンサーリンク】

python3プログラム入門:基本構文

【スポンサーリンク】

今回はプログラミング言語のPythonの基本構文について記載しようと思います。C言語等は{ ... } で囲むことでブロック(複文)を構成しますが、Python ではインデント(行頭の空白文字の数)が重要な意味を持ち、同じ数の空白でインデントされた文がブロックとみなされます。Pythonに触るのが初めての方は、まずこのインデントの使い方に注意が必要です。

変数

Pythonは型を指定する必要がありません。自動的に判別して割り当ててくれるので、とても簡単です。

変数名 = 値(数値、文字列等)

num1 = 1  # 変数:num1に1を代入
num2 = 0.1 # 変数:num2に0.1を代入
val = num1 + num2  # 1.1が出力されます
print(val)

str1 = "abc" # 変数:str1にabcを代入
str2 = str1 + "def" # abcdefが出力される。"+"で文字列結合ができる
print(str2)

変数の型情報を知りたいときは、type関数で調べることができます。

str = "test"
print(type(str))
>>> <class 'str'>

複数データを管理する

複数のデータをまとめて管理する構造として、リスト、タプル、辞書、集合の4つがあります。それぞれ説明してきます。

リスト(配列)

リストは、複数のデータを[]で囲み、カンマで区切ります。主な使い方を列挙します。

mylist = ["A", "B", "C", "D", "E"] # リスト作成
mylist.append("F") # 最後に"F"を追加
mylist.remove("F") # リスト内の"F"を削除
mylist.insert(1,"AB") # インデックス番号(1)に要素("AB")を追加
pop_val = mylist.pop(1) # 指定したインデックスを削除、削除した値を返す pop()は最後の要素を削除

print(mylist[1]) # インデックス前から1番目の値を取得
print(mylist[-1]) # インデックス後ろから1番目の値を取得(-1が一番後ろ)
print(mylist[1:4]) # インデックス1~4番目までの値を取得
print(mylist[3:]) # インデックス3番目以降のすべて値を取得
print(mylist[:3]) # インデックス3番目より前まで(インデックスの2まで)のすべて値を取得
print(len(mylist)) # 要素数を取得

print('A' in mylist) # 要素に"A"が含まれるか判定 True or False
mylist.clear() # 全要素削除

タプル

タプルは、複数のデータを()で囲み、カンマで区切ります。()は省略可能です。タプルはimmutableで変更ができません。

Tuple = "A", "B", "C", "D", "E"

print(mytuple[1]) # インデックス前から1番目の値を取得
print(mytuple[-1]) # インデックス後ろから1番目の値を取得(-1が一番後ろ)
print(mytuple[1:4]) # インデックス1~4番目までの値を取得
print(mytuple[3:]) # インデックス3番目以降のすべて値を取得
print(mytuple[:3]) # インデックス3番目より前まで(インデックスの2まで)のすべて値を取得
print(len(mytuple)) # 要素数を取得

print('A' in mytuple) # 要素に"A"が含まれるか判定 True or False

辞書

辞書は、キーと値をセットにして、{}で囲み、カンマで区切ります。

mydict = {"A":1, "B":2, "C":3}

mydict["D"] = 4 # key:"D" 値:4を追加
mydict.setdefault("D", 5) # key:"D" 値:5を追加 既にkeyが存在しているときは、値を上書きしない
pop_val = mydict.pop("D") # 指定したkeyで削除

print(mydict["C"]) # keyから値を取得
print(mydict.keys()) # 全てのkeyをリスト表示
print(mydict.values()) # 全てのvalueをリスト表示
print(len(mydict)) # 要素数を取得

print('C' in mydict.keys()) # keyに"C"が含まれるか判定 True or False
print(3 in mydict.values()) # valueに3が含まれるか判定 True or False
mydict.clear() # 全要素削除

集合

集合は、複数データを{}で囲み、カンマで区切ります。集合は、重複した要素を持ちません。また、要素順もありません。

myset = {"A", "B", "C"}
myset1 = {"A", "B", "C", "A", "C"}

myset.add("D") # "D"を追加
myset.remove("D") # "D"を削除

print(set(myset1)) # 重複している要素がなくなる {"B", "C", "A"}
print(len(myset)) # 要素数を取得

print('C' in myset) # keyに"C"が含まれるか判定 True or False

myset.clear() # 全要素削除

Queue

FIFOキュー(先入れ先出し)でデータを取り出す方法です。 ※下記プログラムは動きません。各ファンクションの説明です。

import queue

q = queue.Queue() # FIFOキューの作成 キューのデータ数無限
q = queue.Queue(maxsize=3) # FIFOキューの作成、キューのデータ数 3個

q.put(put_data) # キュー格納上限に達している場合は、利用可能になるまでずっと待つ
q.put(put_data, block=True, timeout=3) #  キュー格納上限に達している場合は、3秒待つ。それでも上限に達している場合は、queue.Full例外を出す
q.put(put_data, block=False) #キュー格納上限に達している場合は、queue.Full例外を出す
q.put_nowait(put_data) # q.put(put_data, block=False)と同じ

get_data = q.get() # 取り出すデータがない場合、利用可能になるまでずっと待つ
get_data = q.get(block=True, timeout=5) # 取り出すデータがない場合、5秒待つ。それでもデータがない場合は、queue.Empty例外を出す。
get_data = q.get(block=False) # 取り出すデータがない場合、queue.Empty例外を出す。
get_data = q.get_nowait() # get_data = q.get(block=False)と同じ 

数値 ⇒ 文字、数値 ⇒ 文字変換

str(123) # 数値の123を文字列の'123'に変換
int('123') # 文字列の'123'を数値の123に変換
float('1.23') # 文字列の"1.23"を数値の1.23に変換

文字列 ⇒ バイト列、バイト列 ⇒ 文字列に変換

'abc'.encode('utf-8') # 文字列をバイト列に変換
b'abc'.decode('utf-8') # バイト列を文字列に変換

制御文

if文

# if- else文
if 条件:
    print 'a'
else:
    print 'b'
    
# if- elif-else文
if 条件1:
    print 'a'
elif 条件2:
    print 'b'
else:
    print 'c'

for文

# 10回繰り返す
for i in range(0, 10):
    if i <= 5:
        continue # i<=5なら戻る
    if i == 8:
        break # i=8で終了
    print(i)
# listの要素全てに対して処理が繰り返される
mylist = ["A", "B", "C", "D", "E"]
for item in mylist:
    print(item)  
mydict = {"A":1, "B":2, "C":3}
# 辞書の全てのキー(key)に対して処理が繰り返される
for key in mydict.keys(): # for k in mydict: でも同じ
    print(key)
    
# 辞書の全ての値(value)に対して処理が繰り返される
for val in mydict.values():
    print(val)

# 辞書の全てのキー(key)、値(value)に対して処理が繰り返される
for key, val in mydict.items():
    print(key, val)

# 辞書の全てのキー(key)、値(value)に対して処理が繰り返される。タプルで受け取る
for val_tuple in mydict.items():
    print(val_tuple) # タプル
    print(val_tuple[0]) # key
    print(val_tuple[1]) # value

while文

i = 0
while i < 5: # i < 5になるまで繰り返す
    print(i)
    i += 1
    
# 無限ループ
while True:
    処理

関数

defを付けると関数になります。戻り値の型は記載する必要はありません。return文があれば、その値が戻り値となります。return文がなければ、戻り値はありません。

def add(num1, num2 = 10):
    return num1 + num2
val = add(1, 2) # add関数に引数、1, 2を渡す num2はデフォルト値10から引数で与えらえた2になる
print(val)
>>> 3 # 出力結果

def add(num1, num2 = 10):
    return num1 + num2
val = add(1) # add関数に引数、1を渡す。num2はデフォルト値のnum2=10となる
print(val)
>>> 11 # 出力結果

コメント

# 1行コメント

'''
複数行コメント
複数行コメント
複数行コメント
'''

基本的な構文について説明しました。

pythonに戻る
トップページに戻る