はじめてのPython（基礎文法）

# はじめに
本記事では、プログラミング言語「Python」の基本的な書き方を紹介します。
Python初学者の方、基礎文法をど忘れしちゃった方等に読んでもらえたらなと思います。
# 環境
- プログラミング言語
    - Python 3.12.3
:::note info
コマンドプロンプトにて以下コマンドを打つとバージョンを確認できる
:::
```
python -V
```
- 統合開発環境
    - Jupyter lab(使用ブラウザはCrome)
# 基礎文法
## 四則演算
```
#足し算
1+2

#出力結果：3

#引き算
3-1

#出力結果：2

#掛け算
2*3

#出力結果：6

#割り算
8/3

#出力結果：2.6666666666666665

#割り算（整数）
8//3

#出力結果：2

#割り算（整数で割った余り）
8%3

#出力結果：2
```
:::note info
「#」 につづいて入力することでコメント（実行結果に影響を与えない文字）を書ける
:::
## 文字列
```
#ダブルクォーテーション（もしくはシングルクォーテーション）で囲むと文字列として認識される
※改行は不可
"Hello, Python!"
'Hello, Python!'

#トリプルクォーテーションで囲むことでも文字列として出力できる。上述の方法と違い、こちらでは囲んだ範囲内で改行することができる
print('''１行目
２行目
３行目
４行目''')

#出力結果：
１行目
２行目
３行目
４行目

#print関数を使うことで文字列を出力できる
print("Hello Python!")

#出力結果：Hello Python!

#文字列は「+」で結合できる
print("こんにちは。"+"宇宙猫です。")

#出力結果：こんにちは。宇宙猫です。

#数値と文字列結合することはできない
print("3"+4)

#出力結果：TypeError: can only concatenate str (not "int") to str

#数値と文字列結合する方法は以下の通り、str関数を使って数値を文字列にキャストする
print("3"+str(4))

#出力結果：34
```
## 変数
```
#「=」を使うことで宣言した変数に値を代入できる
#変数「a」に数値「1」を代入
a=1

#変数「b」に数値「2」を代入
b=2

#足し算
a+b

#出力結果：３

#文字列結合と組み合わせ
#変数「name」に文字列「宇宙猫」を代入
name="宇宙猫"

#文字列結合
print("こんにちは。"+name+"です。")

#出力結果：こんにちは。宇宙猫です。
```
## リスト
```
#[]を使うことでリスト型の変数（配列）を定義できる
List=[1,"b",3,"d",5]

#リストの中身を全出力
print(List)

#出力結果：[1, 'b', 3, 'd', 5]

#リストの特定の要素を指定して出力
print(List[2])

#出力結果：3

#リストに要素を追加して出力
List.append("d")
print(List)

#出力結果：[1, 'b', 3, 'd', 5, 'd']
```
## if文
```
a=15
b=20

if a<b:
    print("aはbより小さいです")
elif b<a:
    print("bはaより小さいです")
else:
    print("aとbは等しいです。")

出力結果：aはbより小さいです
```
:::note info
「:」を忘れずに！
:::
## for文
```
List=[1,2,3,4,5,6,7,8,9,10]
for i in List:
    print(i)

#出力結果：
1
2
3
4
5
6
7
8
9
10

for i in List:
    print("ピザ")

#出力結果：
ピザ
ピザ
ピザ
ピザ
ピザ
ピザ
ピザ
ピザ
ピザ
ピザ

#range関数　
#繰り返しごとに第一引数に第三引数を加算していく
#第二引数に到達したら終了

#第一引数 - start: 省略可能。シーケンスの最初の値。デフォルトは0です。
#第二引数 - stop: シーケンスの最後の値（この値は含まれない）。必須です。
#第三引数 - step: 省略可能。各要素間の増分。デフォルトは1です。

for i in range(2,10,3):
    print(i)

#出力結果：
2
5
8

#応用
for i in range(len(List)):
    print(List[i])

#出力結果：
1
2
3
4
5
6
7
8
9
10

#要素数と共に出力
for i,j in enumerate(List):
    print(i,j)

#出力結果：
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
```

## ライブラリ
:::note info
pythonには便利なライブラリが多く存在する。
以下の手順でライブラリを使用する。
①!pip install ライブラリ名（初回のみ）
②import ライブラリ名（毎ファイル）
:::
```
#日本の祝日を取得できるライブラリを使用する
#まずはインストール
!pip install jpholiday

#インストールに成功した場合、「Successfully installed」と表示される

#次にインポート
import jpholiday

#こちらは成功しても何も出力はなし

#使ってみる(2024年の祝日を取得！)
jpholiday.year_holidays(2024)

#出力結果：
[(datetime.date(2024, 1, 1), '元日'),
 (datetime.date(2024, 1, 8), '成人の日'),
 (datetime.date(2024, 2, 11), '建国記念の日'),
 (datetime.date(2024, 2, 12), '建国記念の日 振替休日'),
 (datetime.date(2024, 2, 23), '天皇誕生日'),
 (datetime.date(2024, 3, 20), '春分の日'),
 (datetime.date(2024, 4, 29), '昭和の日'),
 (datetime.date(2024, 5, 3), '憲法記念日'),
 (datetime.date(2024, 5, 4), 'みどりの日'),
 (datetime.date(2024, 5, 5), 'こどもの日'),
 (datetime.date(2024, 5, 6), 'こどもの日 振替休日'),
 (datetime.date(2024, 7, 15), '海の日'),
 (datetime.date(2024, 8, 11), '山の日'),
 (datetime.date(2024, 8, 12), '山の日 振替休日'),
 (datetime.date(2024, 9, 16), '敬老の日'),
 (datetime.date(2024, 9, 22), '秋分の日'),
 (datetime.date(2024, 9, 23), '秋分の日 振替休日'),
 (datetime.date(2024, 10, 14), 'スポーツの日'),
 (datetime.date(2024, 11, 3), '文化の日'),
 (datetime.date(2024, 11, 4), '文化の日 振替休日'),
 (datetime.date(2024, 11, 23), '勤労感謝の日')]
 
#リストで今年の祝日が取得できました！
```
:::note info
以下コマンドでインストール済みのライブラリとそのバージョンが確認できます。
pip list
:::


## おまけ
ここまで学んできた内容を活用して、今年の祝日のうち残っているのは何日か出力してみる

```
import jpholiday
import datetime

#今日の日付
today=datetime.date.today()

#今年の祝日
holidays_2024=jpholiday.year_holidays(2024)

#今年の残り休日数
rest_holiday_count=0

#今年の終了済み休日数
end_holiday_count=0

for i in range(len(holidays_2024)):
    holiday=holidays_2024[i]
    holiday_date=holiday[0]
    if today<=holiday_date:
        rest_holiday_count+=1
    else:
        end_holiday_count+=1

print("既に終了した今年の休日数は"+str(end_holiday_count)+"日です。")
print("残り休日数は"+str(rest_holiday_count)+"日です。")

出力結果：
既に終了した今年の休日数は6日です。
残り休日数は15日です。
```
まだ2/3以上残ってますね！うれしい！
見切り発車しましたが思ったより学んだ内容をフル活用できました。

# おわりに
ライブラリをいろいろ使っていくとpythonの門を叩いている気がしてきます。

ご指摘等あればぜひコメントください。
また、少しでも参考になったらいいねしていただけるとうれしいです。

以上。