Python3の基本構文 第一回

はじめに

お疲れさまです。
こちらでは、Pythonの基本構文を知って頂き、最低限のこの知識であとは自力で調べていけるくらいの知識を説明したいと思います。割と分かりやすい言語なので 初学者とかには
いいのかな と思いました。
AI や機械学習 など 使い方はいろいろありますが Web アプリケーションなども作れるので初めてやる言語としては良いのかな と思いました。
ただし、今後 Web エンジニアとか目指すのであれば 最初から Java がいいかもしれません
同じオブジェクト指向言語 なので Python を覚えてから Java に行っても良いかもしれませんね。では頑張りましょう!
Python のバージョンは 3.9を利用してます。

まずは各言語お約束のHello Worldですかね!





お約束の'ハローワールド'をコンソール画面に出力になります。最初の#!/bin/python の部分はシバンと言って、スクリプトを書くときはお約束になっています。これは明示的にPython を使うとオペレーティングシステムに伝えています。
print()関数を使って、文字列を出力しています。
とりあえず、実行して、正常に終了出来たとすれば、Pythonの環境は整っているから大丈夫です!
文字列は 'の中に入れます。”でもOK!どちらかに統一するのがいいです。数値の場合は ' なしで 行けます。プログラムの中にコメントを入れたい場合 # もしくは ’’’で囲みます。





コメントにした# や ''' で囲まれたところは、出力されていません。print()関数で、引数に入れた文字は出力されています。
初めての人は、これだけで何か面白いと思ったのではないでしょうか。

変数とデータ型

式と演算

数値の演算





正常に数値の出力が出来ました。これだと面白くないので、print関数の引数に演算子を入れて計算してみましょう!





上手く演算結果が出ました。関数の引数に後から説明する変数や式を書くと自動的に演算してくれます。演算子の代表的なものをリストします!

演算子  説明  例  例の実行結果 
 +  加算  print(10 + 10)  20
 -  減算  print(100 - 1)  99
 *  掛け算  print(9 * 6)  54
 /  割り算  print(7 / 4)  1.75
 //  割り算の商  print(25 // 3)  8
 %  割り算の余り  print(25 % 3)  1
 **  べき乗  print(5 ** 2)  25

一旦、この演算子を覚えておけば良いかなと思います。念のため、プログラム上で実行してみましょう。





上手く計算出来ています。この様に演算することが出来ます。このまでは、おそらく簡単に理解出来たと思います。

文字列の演算

Pythonでは、文字列の演算も可能です。先ほどは、数値の演算をおこないましたが、今回は文字列演算になります。注意しなければならない事として、データの型が同じ出ないと演算出来なく
エラーになります。データの型に関しては後述しますが、今は、数字は数字だけ演算できる、文字列は文字列だけ演算出来ると覚えて下さいな。





文字列の演算が出来ました。試しに数値と文字列を演算してみましょう!エラーになります。


 例外が発生しました: TypeError
unsupported operand type(s) for +: 'int' and 'str'
File "/home/tama/python_pure/tmp.py", line 10, in <module>
print(3 + '文字列')
TypeError: unsupported operand type(s) for +: 'int' and 'str'

となりました。TypeErrorとは、データの型が違って、演算できないということです。よく、エラー文を見てみると line10(10行目)が駄目ということです。最後の行の
TypeError: unsupported operand type(s) for +: 'int' and 'str' の'int' and 'str' に着目下さい!int型とstr型ですよーーと言われています。まだ記述していませんが、データのタイプが違うと
いうことです。ちょっとだけ説明しておくと int型は、数値、str型は、文字列です。後からデータの型は記述するので今は、さらりと流して下さいな!

数値の1と文字列の1は厳密に区別されます。ここで覚えておきたいのが、'1'とするとPythonは、文字列として認識し 1 と記載すると数値として認識するということです。

これは、他の言語やLinuxシェルスクリプトでも同じような考え方ですので、結構重要な事になります!

文字列の掛け算なんかも出来ます。





出来ました!では文字列演算で例を記述します。





だんだんそれらしくなってきました。
小学生の時に習ったと思いますが、演算子には優先順位があります。代表的な例を記載します。

四則演算の優先順位

括弧内の計算
まずは括弧の中の計算を優先して行います。
例: (3+2)×5=5×5=25

累乗やべき乗(必要に応じて) 四則演算以外を含む場合、べき乗が次に優先されます。
例: 2**3+4=8+4=12

掛け算と割り算 次に掛け算と割り算を左から右の順で処理します。
例: 10÷2×3=5×3=15

足し算と引き算 最後に足し算と引き算を左から右の順で処理します。
例: 10−4+3=6+3=9

コードの可読性をUPさせるためになるべく()を使うようにした方がいいです。他の人の書いたコードを読むときとかなるべく丁寧に書いた方が皆に喜ばれます。
難解なコードでステップ数を多少減らす効果しかないなら、可読性の良いコードを書く方がいいですね!

エスケープシーケンス

文字列リテラルを記述するときによく使われるのがエスケープシーケンスです。バックスラッシュで表されますが、Linuxの場合は \  Windowsの場合は¥となります。
文字コードや開発環境の問題なので、どちらも同じ意味で覚えて下さい。

代表的なエスケープシーケンス

表記  意味 
 \n  改行を表す制御文字
 \\  \ (バックスラッシュ)
 \'  \'(シングルクォーテーション)
 \"  \"(ダブルクォーテーション)





きちんと\nで改行されています(2行になってる)
また、正規表現の日本の電話番号のパターンは、変数の phone_pattern に代入しているだけなので、出力されていません。変数は、後述しますね!

基本のデータの型

Pythonでは、以下の様なデータの型を利用しています。今はピンと来なくてもさらっと覚えてくださいませ。
1. 基本データ型
int (整数型): 整数値を表します。 x = 10
float (浮動小数点数型): 小数点を含む数値を表します。 y = 3.14
bool (論理型): 真偽値を表します。True または False。 z = True
str (文字列型): テキストデータを表します。 name = '文字列'

2. コンテナ型
list (リスト): 複数の値を順序付きで格納します。変更可能(ミュータブル)。 my_list = [1, 2, 3, 'apple']
tuple (タプル): 複数の値を順序付きで格納します。変更不可(イミュータブル)。 my_tuple = (10, 20, 30)
set (セット): ユニークな値の集合で、順序は保証されません。 my_set = {1, 2, 3, 4}
dict (辞書): キーと値のペアを格納します。 my_dict = {'name': 'Alice', 'age': 25}

まだあるのですが、初級としては、上記を抑えておくようにしましょう!





基本データ型を調べるコードでした。簡単なコードですがif文とかまだ記載していないので、あーこんな感じかーくらいの温度感で大丈夫です。コンテナ型については、後述します。

変数

前項目で x = 10 や x = 3.14 や x = '本日は晴天ナリ'などと記載したが、まさに x が変数というものです。
今までは 数値のリテラルとか文字のリテラルとかを使っていましたが 変数を使うとさらに便利になり コードの使い方がとても便利になります。変数の制約もいろいろありますが、基本的には 変数名=値 という感じで 代入していく イメージです。変数には様々なデータを入れることができます 明示的に int 型とかstr型とか指定することもできます。Python では明示的にデータ型指定しなくても自動に型を認識できます。しかしながら 良いシステムを作るには、型を明示的に宣言した方が良いかもしれません。可読性の良いプログラムを組むにはなるべく 誰が見ても分かりやすく書くことが重要かと思います。





どちらの場合も結果は同じですね。その他、変数から変数に代入することもできます。





こんな感じこんな感じで利用します。
変数名は自由に作れるが気つけること
1. 組み込み関数やキーワードの上書き禁止
Pythonには、print、list、dictなどの組み込み関数やメソッド、またはfor、ifなどのキーワードがある。それらを変数名に使うと、予期しない動作やエラーにつながるので気を付ける。
list = [1, 2, 3]      # NG: 組み込みの`list`を上書き
print(list)        # 組み込み関数`print`は問題なく動くが混乱を招く!

2. 意味のある名前を使用 変数名はその変数が何を表しているのかを明確にする。例えば、数値を格納する変数ならnumberやcount、ユーザー名ならuser_nameなどのように具体的に命名しましょう。
x = 10        # あいまいな変数名は避ける。使っちゃうときあるけど。。。
age = 25        # 意味のある変数名が良い

3. 命名規則を守る Pythonの変数名は以下の規則に従う必要があります:。
英字(a〜z, A〜Z)、数字(0〜9)、またはアンダースコア(_)のみ使用可能です。 変数名は数字で始めては駄目です。
_variable = "OK"        # 有効だけど、あまりお勧めしない __main__とか特殊な変数があるので!
variable1 = "OK"        # 有効
1variable = "NG"        # エラー!数字で始まるのは駄目です!

4. PEP 8のスタイルガイドに従う。
Pythonの公式スタイルガイドでは、以下のような命名規則が推奨されています。
小文字を使用: 変数名は基本的に小文字を使います。 user_name = "田中一郎"
単語の区切りにアンダースコア: 単語をつなぐ場合はuserNameではなくuser_nameのようにアンダースコアで区切る。

5. アンダースコアの用途 アンダースコアには特別な意味があります。以下の用途を知っておくと便利です:。
_で始まる変数: 慣習的に「プライベート変数」を表します。_単体の変数: ループ内で値を無視する場合に使います。
for _ in range(5):        # 値を使用しない場合
  print("Hello")

6. 大文字と小文字は区別される。
Pythonでは大文字と小文字が区別されるため、userNameとusernameは別の変数として扱われます。統一した命名規則を心がけましょう。

7. 長すぎる変数名を避ける 可読性のため、長すぎる変数名は避ける。ただし意味がわかる範囲で適切な長さにすることが重要です。※他の人がコード解析しても何となく用途がわかるような名前が良いです。

駄目な変数名はPython言語の予約語となるが、次のコードで確認できる。




上記の出力となった。気を付けましょう!(^^♪

複合代入演算子

変数の現在の値に加減乗除する。

演算子  説明 
 +=  右辺の値と左辺の変数の値を加算して変数に代入
 -=  右辺の値と左辺の変数の値を編纂して変数に代入
 *=  右辺の値と左辺の変数の値を掛け算して変数に代入
 /=  右辺の値と左辺の変数の値を割り算して変数に代入

特に難しい事はないかと思います。インクリメントする場合は、 i++ ではなく i += 1 とするのがPython風です。

キーボードからの入力を変数に代入する。

少しプログラムらしくなって来ました。キーボードからの入力を変数に代入したいです。その場合 input()関数を利用します。より動的な感じになってきました。
変数名 = input('コンソールに表示される文字列')
input()関数は、引数に指定した文字列をコンソールに出力し、ユーザからの入力を待ちます。


こんな風に一旦ウエイトします。ここで何かキーを入力してみて下さい。※ここでは お元気ですか?? を入力してみました。



どうです?何かプログラムらしくなってきましたでしょう!プログラムと対話してる感じですね!だんだん面白くなってきたかなーーー、そうだと嬉しい(^^♪

f-string

 f'{}を含む文字列'で使います。 {}は複数あってOKです。注意f' 'の中で引用符を使いたい場合は" " も使えます。

上記では、初めてf-stringを使いました。f-stringはフォーマット関数みたいなもので、Python3.6以降から導入されています。コードがスッキリ書けるので可読性もいいですね。
今回の私の環境は、CentOS Stream 9 でデフォでinstallされるPython3.9を利用しているのでf-stringが使えます。ver3.6以前であれば最新バージョンを使ってもいいかもですね!
そういや、Pytnon2系とPython3系は、互換性がないのでコード流用が難しいです。今後のPythonがどうなっていくかわからないですが、上位互換はほしいところです。特に理由がないなら最新版VersionのPythonを使うことをお勧めします。


基本構文第一回のまとめ

プログラムは様々な部分に式を含むことができる。
式は演算子とオペラントによって構成される。
算術演算子を使うと数値の取得 計算や 文字列の連結が行える。
式は実行されると評価され式に含まれる 各演算子が周囲のオペラントを巻き添えにしながら計算結果に置き換わっていく。
優先順位が高い演算子から順に 同じ順位の場合は左から評価される。
プログラムの中に書き込まれた 具体的な数値や 文字列を リテラルという。
情報の種類をデータ型といいいんとフロート ストリング ブールが代表的である。スーツと文字列の組み合わせでは演算できないため 型変換をしなければならない。
変数には 代入演算子を用いて情報を保存 代入できる。
コードの中に変数名を記述すると 変数の中の値を利用 参照できる。
変数の命名規則は 原則として 自由だが 予約語など 注意すべきルールが存在する。
複合代入 塩山市を用いると 変数の値 自体を書き換える 処理を簡潔に書ける。

とりあえず今までの まとめ です ここまでわかった方は次の第2回に進んでください。だんだんプログラム らしくなってくるから面白くなってきますよ