===== 基本構文 ===== ==== コメント ==== #記号やヒアドキュメントを使用する。 # 1行コメント a = 1 # 行の途中からコメントにすることも可能 """ ヒアドキュメントを変数に代入しないことで コメント扱いにすることが可能。 """ ==== 命令文の終了 ==== 命令文の終了はセミコロン(;)を使用する。 a = 1; b = 2; c = 3; d = 4 # 1行に1命令の場合、省略可能 ==== 演算子 ==== ^ 分類 ^ 種類 ^ 演算子 ^ 使用例 ^ | 代入演算子 | 加算 | += | a += b | | ::: | 減算 | -= | a -= b | | ::: | 乗算 | *= | a *= b | | ::: | 除算 | /= | a /= b | | ::: | 除算(小数点以下切り捨て) | %%//=%% | %%a //= b%% | | ::: | 剰余 | %= | a %= b | | ::: | べき乗 | %%**=%% | %%a **= b%% | | 比較演算子 | 超過 | > | a > b | | ::: | 未満 | < | a < b | | ::: | 以上 | >= | a >= b | | ::: | 以下 | %%<=%% | a %%<=%% b | | ::: | 同値 | == | a == b | | ::: | 異なる値 | != | a != b | | 論理演算子 | 論理積 | %%and%% | (a > b) %%and%% (b < c) | | ::: | 論理和 | %%or%% | (a > b) %%or%% (b < c) | | ::: | 否定 | not | not(a < b) | | ビット演算子 | 論理積 | %%&%% | a %%&%% b | | ::: | 論理和 | %%|%% | a %%|%% b | | ::: | 排他的論理和 | %%^%% | a %%^%% b | | ::: | ビット反転 | ~ | ~a | | ::: | 左ビットシフト | %%<<%% | a %%<<%% 1 | | ::: | 右ビットシフト | %%>>%% | a %%>>%% 1 | === 代入演算子 === ・・・ === 比較演算子 === ・・・ === 論理演算子 === 論理演算子%%and, or, not%%では、bool型True, Falseだけでなく、数値/文字列/リストなども真偽値として評価される。 ^ 評価結果 ^ 種類 ^ | False | ・bool型のFalse\\ ・None\\ ・数値の0(int)または0.0(float)\\ ・空文字列''\\ ・空コンテナ(リスト、タプル、辞書など)[], (), {} | | True | 上記以外 | 論理演算の結果はbool関数で取得可能。ただし'0'や’False'を評価するには、distutils.util.strtobool()を使用する。 === ビット演算子 === ・・・ ==== 関数 ==== === 関数呼び出し === Pythonには関数とメソッドの2種類存在 ^ 種類 ^ 説明 ^ 呼び出し方 ^ 例 ^ | 関数 | - | 関数名(引数) | print("aiueo") | | メソッド | - | データ.メソッド名(引数) | - | === 関数定義 === # 引数なし def hello1(): print("Hello !") # 引数あり def hello2(name1, name2): print(f"Hello {name1} and {name2} !") # 引数のデフォルト値あり def hello3(name = "foobar"): print(f"Hello {name} !") # 戻り値あり def calc1(height, weight): ret = height * weight return ret # 値の返却 a = calc2(100 * 200) # 呼び出し # 無効な戻り値を戻したい場合 def calc2(i, j) if i < 100: return None # 無効値という意味でNoneを返す return height * weight ==== リストなど ==== === リスト === 要素を[]の中で記述して定義する。 a = [ 1, 2, 3, 4, 5 ] # 数値のリスト b = [ "aaa", "bbb", "ccc" ] # 文字列のリスト c = [ 1, "aaa", 2, "bbb", 3, "ccc" ] # 数値、文字列の混在も可能 d = [] # 空のリスト 他の型(文字列やrange())からリストを生成する場合、list()を使用する。 s1 = list("Hello") # [ 'H', 'e', 'l', 'l', 'o' ]のリストが生成 s2 = list(range(0, 3)) # [ 0, 1, 2 ]のリストが生成 s3 = list() # []の空リストが生成 複数のリストを纏めた新しいリストを作成する場合、zip()やenumerate()を使用する。 s1 = [ 1, 2, 3 ] s2 = [ 4, 5, 6 ] s3 = [ 7, 8, 9 ] tmp1 = zip(s1, s2, s3) t1 = list(tmp1) # [ ( 1, 2, 3 ), ( 4, 5, 6 ), ( 7, 8, 9 ) ]のリストが生成 # 縦に要素が結合されるので注意 s4 = [ "aaa", "bbb", "ccc" ] tmp2 = enumerate(s4) t2 = list(tmp2) # [ ( 0, "aaa" ), ( 1, "bbb" ), ( 2, "ccc" ) ]のリストが生成 tmp3 = enumerate(s4, 1) t3 = list(tmp3) # [ ( 1, "aaa" ), ( 2, "bbb" ), ( 3, "ccc" ) ]のリストが生成 == 参照 == s1 = [ 1, 2, 3, 4, 5 ] t1 = s1[0] # 0番目の要素(1)を取得 t2 = s1[1:3] # 1番目~3番目の要素[2, 3]を取得 t3 = s1[0:5:2] # 0番目~5番目の要素を増分2で取得[1, 3, 5] u1, u2, u3, u4, u5 = s1 # s1の各要素を先頭から順番にu1~u5変数へ代入 == 追加 == s1 = [] s1.append("aaa") # [ "aaa" ] s1.append("bbb") # [ "aaa", "bbb" ] s1.append("ccc") # [ "aaa", "bbb", "ccc" ] s1.insert(1, "ddd") # [ "aaa", "ddd", "bbb", "ccc" ] == 更新 == s1 = [ "aaa", "bbb", "ccc" ] s1[2] = "ddd" # [ "aaa", "ddd", "ccc" ] == 削除 == s1 = [ "aaa", "bbb", "ccc" ] s1.pop() # [ "aaa", "bbb" ] s1.pop(0) # [ "bbb" ] == 多次元リスト == []を入れ子にすることで多次元リストの作成が可能。 s1 = [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] # 2次元リスト === タプル === タプルはリストと異なる定義後は要素の書き換えができない。定数値や辞書のキーに使用する。 要素を()の中で記述して定義する。 a = ( 1, 2, 3, 4, 5 ) # 数値のタプル b = ( "aaa", "bbb", "ccc" ) # 文字列のタプル c = ( 1, "aaa", 2, "bbb", 3, "ccc" ) # 数値、文字列の混在も可能 d = ( 1, ) # 要素が1つの場合、後ろに,(カンマ)が必要 e = () # 空のタプル f = a + b # 既存のタプルから新しいタプルを作成することも可能 g = a * 2 # 同上 他の型(文字列やrange())からリストを生成する場合、tuple()を使用する。 s1 = touple("Hello") # ( 'H', 'e', 'l', 'l', 'o' )のタプルが生成 s2 = touple(range(0, 3)) # ( 0, 1, 2 )のタプルが生成 s3 = touple() # ()の空タプルが生成 == 参照 == s1 = ( 1, 2, 3, 4, 5 ) t1 = s1(0) # 0番目の要素(1)を取得 t2 = s1(1:3) # 1番目~3番目の要素(2, 3)を取得 t3 = s1(0:5:2) # 0番目~5番目の要素を増分2で取得(1, 3, 5) u1, u2, u3, u4, u5 = s1 # s1の各要素を先頭から順番にu1~u5変数へ代入 === セット === 要素を{}の中で記述して定義する。セットは順序性を持たないため、重複する要素は登録できない。またスライスを使用した要素の抽出もできない。 a = { 1, 2, 3, 4, 5 } # 数値のセット b = { "aaa", "bbb", "ccc" } # 文字列のセット c = { 1, "aaa", 2, "bbb", 3, "ccc" } # 数値、文字列の混在も可能 # d = {} # この記述で空のセットは生成できない。後述のset()を使用する 他の型(文字列やrange())からリストを生成する場合、set()を使用する。 s1 = set("Hello") # { 'H', 'e', 'l', 'l', 'o' }のセットが生成 s2 = set(range(0, 3)) # { 0, 1, 2 }のセットが生成 s3 = set() # {}の空セットが生成 == 追加 == s1 = set() s1.add("aaa") # { "aaa" } s1.add("bbb") # { "aaa", "bbb" } ※順序性は保証しない s1.add("ccc") # { "aaa", "bbb", "ccc" } ※順序性は保証しない == 削除 == s1 = { "aaa", "bbb", "ccc" } s1.remove("bbb") # [ "aaa", "ccc" ] == 存在判定 == s1 = { "aaa", "bbb", "ccc" } if "bbb" in s1: # s1に"bbb"が存在すれば、Trueとなる print("bbb is exists.") === 辞書 === キーと値を:(コロン)で区切り、{}の中で記述して定義する。同名のキーを指定した場合、後勝ちで上書きされる。 a = { "foo": 1, "bar": 2, "hoge": 3 } # 値が数値 b = { "foo": "aaa", "bar": "bbb", "hoge": "ccc" } # 値が数値 c = { "foo": "aaa", "bar": 2, "hoge": 3 } # 値が数値 d = {} # 空の辞書を生成 == 追加・参照 == # 追加 s1 = {} s1["foo"] = 1 # { "foo": 1 } s1["bar"] = 2 # { "foo": 1, "bar": 2 } s1["hoge"] = 3 # { "foo": 1, "bar": 2, "hoge": 3 } # 参照 t1 = s1["bar"] # t1に2が代入 ==== インポート ==== 特定の関数を使用する場合、モジュールのインポートが必要。 import math # ceil関数を使用するためのインポート print(math.ceil(a))