さあPythonの文法を見ていこう!
皆さんはPythonの文法を体系的に理解していてある程度知ってるよーって自身持って言えますか?
筆者もPythonを使ってやりたいことがあって、それに必要な文法知識を毎回ググって少しずつ覚えていってたので、実は一から学んだことはないんですよね(笑)
でも、やはり”Pythonを使ってイチからアルゴリズムを構築“したり、”自分のやりたいことを頭に思い浮かべてコードを実装”するには、一度は文法を体系的に学ぶ必要があると思うんですよね。
というわけで、今回はPythonの文法を改めて学んでいこうと思います。
Contents
文字列(strings)
✔️strings : シングルコーテーションorダブルコーテーションで囲われた値の集合体
✔️ダブルコーテーション3つで文章を出力できる
✔️\n : 改行するの意味
✔️バックスラッシュ2つ(\\)で改行しないの意味
✔️バックスラッシュ(\)の後ろの文字は文字列と認識する
✔️+を使えば文字列を連結できる(+やーの演算子の周りにはスペースを空ける暗黙の了解あり)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
print(' Helllo World! ') # Hello World! print(" Hello World! ") # Hello World! print("2") # 2 print(" I'm pankun ") # I'm pankun print(""" Hello World!! How are you doing? """) # Hello World!! # How are you doing? print("hello \nworld!!!!") # hello # world!!!! print("back slash n: \\n") # back slash n: \n print('I\'m pankun') # I'm pankun print("Hello" + "World" + "♡") # HelloWorld♡ |
変数代入 (assignment)
✔️値を代入する時は演算子(=)を使い表現する(変数を宣言する、変数を定義するという)
✔️変数は数字から始めることはできない(使いたい場合はアンダースコア[ _ ]を使う)
✔️Case sensitiveである (Hello と hello は別の変数として扱う)
1 2 3 |
name = "I'm pankun." monkey = "Super monkey!" print(name + monkey) # I'm pankun.Super monkey! |
Strings(文字列)を補完するformatメソッド
✔️文字列(” “)の後ろにドット(.)を付けることでメソッド(元々備わっている機能)を呼び出すことが出来る
✔️{ }.format( ):{ }を( )で補う
1 2 3 4 5 6 7 |
hello = "Heeello" world = "Wooorld!" print("{} {}".format("hello, world ")) # Heeello Wooorld! name = "pankun" print("Hi, { }! What's up? ".format(name)) # Hi, pankun! What's up? |
fstring(python version 3.5~から対応)
✔️{ }に直接変数を書き込むことが出来る
✔️ダブルコーテーションの前にfをつけることで文字列ではなくfstringsであることをことを明示
1 2 3 4 5 6 7 |
hello = "Heeello" world = "Wooorld!" print(f"{hello} {world}") # Heeello Wooorld! name = "pankun" print(f"Hi, {name}! What's up? ") # Hi, pankun! What's up? |
Built-in-Function
✔️built in function: pythonにデフォルトで組み込まれた関数
✔️type() : データ型を調べる時に使う(str, int, float, boolean)
✔️id() : メモリの割り当てが表示される
1 2 3 4 5 6 7 8 9 10 11 |
# type() hello_type = type("Hello") print(hello_type) # <class 'str'> print(type(2)) # <class 'int'> # id() hello_id = id("hello") print(hello_id) # 140505695784048 hello = "hello" print(id(hello)) # 140505695784048 |
数値型(numeric)
✔️数値型はinteger, float, complex の3種類
✔️コンピュータは0と1(2進数)しか理解できないので、小数点を正確に表現することができない
1 2 3 4 5 6 7 8 |
# 数値型(Numeric): integer(整数)、float(小数)、complex(複素数) # int(integer, 整数): -3, -2, -1, 0, 1, 2, 3, 100, 1000 print(type(1000)) # <class 'int'> # float (浮動小数点):-0.5, -0.1, 0.2, 0.4, 1.2, 5.8 print(type(0.8)) # <class 'float'> print(0.1 + 0.1 + 0.1) # 0.30000000000004 |
numeric演算子(numeric operator)
✔️四則計算(+, -, *, /)をする操作をNumeric Operatorという
✔️四則演算だけでなく、あまりや冪乗も出来る
✔️変数に数値型を代入して、変数同士で計算もできる
✔️プログラミングの”=”は左辺と右辺が等しいという意味ではなく、右辺を左辺に代入するという意味
✔️a += 1とa = a + 1は同じ意味
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# Numeric Operator(数値演算子) # 四則演算 print(1 + 1.4) # 2.4 print(1 - 2.4) # -1.4 print(5 * 2) # 10 print(1 / 2) # 0.5 print(5*6 - 3/6) # 29.5 result = 1 + 1.0 print(f"type of result: {result} is {type(result)}") # type of result: 2.0 is <class 'float'> # その他の演算 # float division print(14 // 3) # 4 # modulo, 剰余, , あまり print(14 % 3) # 2 # exponentiation, 冪乗 print(3 ** 3) # 27 #変数の四則演算 apple = 120 pay = 1000 otsuri = pay - apple priny(f"otsuri is { otsuri } ") # otsuri is 880 # augmented assignment a = 1 // a = a + 1 a += 1 # a = a +1 print(a) # 2 |
Boolean型(bool)
✔️Boolean型はinteger型のサブタイプ(Booleanはintegerの一部: True + 1 = 2)
✔️Trueは1、Falseは0
✔️比較演算子や条件分岐に頻繁に使われる
1 2 3 4 |
# Boolean型 : True(真:1)とFalse(偽:0) balance = 1000 withdrawal = 500 pirnt(balance > withdrawal) # True |
比較演算子(関係演算子)
✔️”<=”, “>=”は必ず”=”が後ろ
✔️” ! “はNOT演算子
1 2 3 4 5 6 7 8 9 10 |
# 比較演算子(relational operator) >, <, >=, <=, ==, != print(10 > 4) # True print(5.3 < 2) # False print(5.3 <= 5.3) # True print(10 == 5) # False print(10 != 4) # True print(1 == 1.0) # True print(1 == "1") # False print("1" == "1") # True |
is演算子
✔️is演算子は、各値が同じオブジェクト(ID)かを判別する
✔️Noneの判定に頻出する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# is演算子:同じオブジェクトかどうかを判定する a = 3 b = 3 c = 5 d = a print(id(3)) # 14058339443434 print(id(a)) # 14058339443434 print(id(b)) # 14058339443434 print(a is b) # True print(a is not c) # True print(d is b) # True hello_1 = "Hello" hello_2 = "H" + "e" + "l" + "l" + "o" print(hello_1, hello_2) # Hello Hello print(hello_1 is hello_2) # True hello = "Hey!" print(hello_1 is hello_2) # False # Noneかどうかの判定によく使う nothing = None print(nothing) # None pirnt(nothing is None) # True |
論理演算子(logical operator)
✔️Boolean同士の演算をしてBooleanで返す
✔️and:且つ、or:または、not:≠
1 2 3 4 5 6 7 8 9 10 |
# 論理演算子(logical operators) # and, or, not a = 10 b = 10 c = 100 d = 1000 print(a == b and c > d) # False print(a == b or c > d) # True print(not a == b) # False |
条件分岐(if)
✔️場合分けの制御文を表現することが可能
✔️if 条件文 : 条件文が”True”の時に、処理コードが走る
✔️else:条件文が”False”の時に、処理コードが実行される(下記コード参照)
✔️条件文が変数のみの場合は、変数がNoneで”False”、None以外何かが代入されていると”True”で返す
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# if文 age = 19 age_tabaco = 20 if age >= age_tabaco: print(" You can smoke cigarette. ") else: print("You can't smoke.") # You can't smoke. age_marriage = 18 if age >= age_tabaco: print(" You can smoke cigarette. ") elif age < age_marriage: print("You can't even get married.") else: print("You can't smoke but can only marry a loved one.") # You can't smoke but can only marry a loved one. # if文のnot age = -50 if not 0 < age <130: pirnt("This age is invalid.") # This age is invalid. # if文のNoneの取り扱い a = None # if a is None: # print("a is None") # else: # print("a has value") if a: (if not a: でaがNoneの場合という条件式になる) print("a has value") else: print("a is None") # a is None |
input関数
✔️input関数を使うと、ターミナル上で打ち込んだ値が変数に代入される
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# input() : 自分が入力した値(integer)を取得する saving_amount = int(input("あなたの貯金額はいくら?")) using_money = 500000 money_choice = """お金の使い道を選択して下さい 1: 高級腕時計を購入する 2: パチンコと競馬で資産を増やす 3:自己投資で本を250冊買う """ if saving_amount >= using_money: print("すぐに積立NISAをはじめよう!") choice = int(input(money_choice)) if choice == '1': print("あなたは物欲で満たされることはないと気づくでしょう") elif choice == '2': print("あなたは資産が減っていることに気づくでしょう") elif choice == '3': print("あなたは最高の買い物をしたことに気づくでしょう") else: print("1~3を選んでください") else: print("無駄使いはやめたまえ") |
リスト型(lists)
✔️複数のオブジェクトを順番に格納して保存したデータ型
✔️”[ ] (スクエアブラケット)”で括って、”,(カンマ)”で各々のオブジェクトを区分けする
✔️リストの各要素のことをインデックスと言い、0から始まる
✔️インデックスを逆から数える場合は-1からはじまる
✔️文字列(Strings)もリストと同様オブジェクトとして扱うことができる(” “の各要素を取り出し可能)
1 2 3 4 5 6 7 8 |
cars = ["Corolla", "Prius", "Yaris", "Rav4"] multiple_lists = ["integer", 2, 2.4, True, cars] print(multiple_lists) # ["integer", 2, 2.4, True, ["Corolla", "Prius", "Yaris", "Rav4"]] print(cars[2]) # Yaris print(cars[-1]) # Rav4 print(multiple_lists[-1][-2]) # Yaris print("Hello World"[6]) # W |
リスト型のmethod
✔️メソッドを使うことでリスト内のオブジェクトを追加、削除、昇順、降順、長さ取得が可能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
cars = ["Corolla", "Prius", "Yaris", "Rav4"] # .append : 新しいオブジェクトを追加する cars.append("Harrier") print(cars) # ["Corolla", "Prius", "Yaris", "Rav4", "Harrier"] # .remove : 一致する最初のオブジェクトを削除する cars.remove("Corolla") print(cars) # ["Prius", "Yaris", "Rav4", "Harrier"] # .sort : オブジェクトを昇順(アイウエオ順)に並び替える cars.sort() print(cars) # ["Harrier", "Prius", "Rav4", "Yaris"] cars.sort(reverse=True) # 降順 print(cars) # ["Yaris", "Rav4", "Prius", "Harrier"] # .insert : 指定したインデックスにオブジェクトを追加する cars.insert(2, "Voxy") print(cars) # ["Yaris", "Rav4", "Voxy", "Prius", "Harrier"] # len() : リストの要素数(integer型)を取得する print(len(cars)) # 5 print("Hello Word") # 11 |
リストの結合
1 2 3 4 5 6 7 8 9 10 |
# "+"演算子でリスト結合可能 a = [1, 2, 3] b = [4, 5, 6] # .appendとおごっちゃにならないよう注意 c = a + b print(c) # [1, 2, 3, 4, 5, 6] a.append(b) print(a) # [1,2, 3, [4, 5, 6]] |
長くなってきたので、今回はこの辺にして次回続きをやっていこうと思います。
楽しみにしててください😎 ではまたね、ばいばい👋
○Pythonをこれから勉強していきたい方
○Pythonの文法を詳しく知りたい方
○筆者と一緒に勉強をしていこうって思っている方