Raspberry Pi & Python 開発ブログ ☆彡

Raspberry PiとPythonの基本的な使い方をわかりやすく解説。初心者、入門者必見!!

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

python basic

ブログ管理者のP.Hです!

今回はプログラミング言語のPythonの基本構文について記載しようと思います。
いろいろな言語を扱うようになると、基本的なif文やfor文ですら、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の基本的なコードについて紹介しました。

pythonを勉強するに当たって読んでおくとためになる書籍を紹介しておきます。定番の独習、速習シリーズの著者:山田祥寛さんが書かれている本です。説明がとてもわかりやすいことと、VS CODEを紹介しているところがとてもいいです!pythonを勉強しようと思っている方はぜひ一度読んでみてください。