Pythonプログラムの基本（基本構文など）

<h3>前提など</H3>

**対象：**　
　・Python初学者が対象
　・[過去記事](https://qiita.com/okamoto0) もチラ見してください。

**開発環境：**　Windows、Visual Studio Code、Python3系
　　　　　　　[前々回構築した開発環境で学習を進めます。](https://qiita.com/okamoto0/items/f63b7726626e57026f99)
　　　　　　　※Windows10での使用を前提とするが、他OSでも大きく変わらないはずです。

**前提：**　初学者は公式ドキュメントを元に学習すべきであるが、
　　　　社内勉強会を前提としているため、基本を掻い摘んで駆け足で説明します。
　　　　[★Python公式ドキュメントへのLINK★](https://docs.python.org/ja/3/)


<h3>今回のテーマ</h3>
Pythonというかプログラムの基本のおさらいです。

**経緯**
これまで、言語予約語、変数、など端折ってきましたが。
受講者よりリクエスト有ったので基本に立ち返ります。
どのプログラミング言語でも、オリジナル関係の資料は大元のドキュメント見るのが基本です。
https://docs.python.org/ja/3/library/functions.html

今回は基本的な使用例を説明します。
初歩の初歩なので他言語プログム経験者は読むまでも無いです。

<h3>組み込み関数</h3>
Python には多くの関数と型が組み込まれています。
今回はその中の一部を説明します。

関数とは、数学の関数の様に、「何らかの値を渡すと、その値に応じた何らかの値を返すもの」です。
実際にプログラミング言語で使う場合は引数を渡して関数を実行すると結果を得る事が出来ます。
結果は計算結果を戻り値を返えしてきたり、画面等に出力したりします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102625/0a26d5ec-6ee7-b760-665f-0adb6d52054c.png)

**print()関数**
イキナリですが、過去記事でも紹介したprint()関数です。
（ ）内の物を出力します。
通常は画面に出力しますが、出力先をファイル等に指定することも可能です。

文字を出力する。
```py
print("Hello world!")
```

計算を行い出力する。
```py
print(1+2)
```
実行結果は以下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102625/fb02c9b4-4cae-787b-9259-93a9b269bfaf.png)

<h3>変数</h3>
変数とは、数値などのデータを保持する場所です。
後からそのデータを利用することができます。
プログラムをする際は、大抵は使用します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102625/0ec71c02-119a-eaee-5ebe-7262e86e13a4.png)
コマンドラインで以下を実行してください。
```py
PI = 3.14
r = 4
ANS = 2 * PI * r
print( ANS )
```
実行結果は以下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102625/986028ea-308d-4e95-2a18-011c8249f36a.png)

<h3>配列</h3>
配列とは、複数の値まとめて入れる事の出来る変数のことで、
複数の箱が並んでいるイメージと認識して良いです。

Pythonには配列の様に複数値を
まとめて持つ形式が幾つかあります。
・リスト型
・タプル型
・辞書型
・配列型
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102625/d761ece9-8ad2-1e1a-9b1a-874cba74e60c.png)
※当記事での説明ではリスト型なども配列として説明します。

**リスト型の使用**
今回はPythonで一般的なリスト型を使用します。
コマンドラインで以下を実行確認します
（１）
```py
data_list=[1,3,5,7,11]
print(data_list[3])
```
（２）
```py
data_list[3]=9
print(data_list[3])
```
実行結果は以下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102625/f1127de3-ab2a-94ad-b54a-8b74e3e73614.png)
解説
（１）
　1行目は、<B>data_list</B>  が リスト型の変数です。
　2行目ではリストの中から使用したい位置を指定します。
　　※位置指定の初っ端は「1」ではなく「０」
（２）
　リスト内の値は変更可能です。
　※タプル型を使用した場合は変更不可


<h3>条件分岐</h3>
条件を満たすか否かで次に行う処理を変えるものです。
条件を満たす場合を<B>真</B>（true）、満たさない場合を<B>偽</B>（false）と言います。
正にイラストの様な処理と成ります。
※やる事はルールに従い動くだけ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102625/efc25099-48fb-c9a5-1de3-0cf1b0b9f6cc.png)


コマンドラインで以下を実行します。
（１）
```py
train = "blue"
if train == "red":
     print("pull")
```
（２）
```py
train = "red"
if train == "red":
     print("pull")
```
実行結果は以下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102625/d49aa474-0140-cddb-d9c9-b607892e4aa7.png)
解説
（１）
　　train  が blue の時は何も処理しない。
（２）
　　train  が red の時はpull を出力する。

<h3>繰り返し処理</h3>
繰り返し処理とは同じ処理を何回もやらせることで、ループ処理とも言います。

Pythonでは while もしくは for が利用できます。
今回は while文を使用します。
処理のイメージは以下のように流れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102625/844b6b74-4c90-470f-26bf-339139ce98fc.png)

以下を実行してください。
```py
n=0
while n<3:
    print("nは" + str(n))
    n = n + 1

```
実行結果は以下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102625/57e5e238-4f86-d31c-6ffb-79e139f5d8f6.png)
解説
<B>while</B> の条件を満たす間は、以降のインデントされた行を繰り返し処理します。

以上の内容を基礎として、ザックリPythonで処理をかけるんじゃないかなと思いますが、社内勉強会では以下をやって貰いました。
<h3>演習問題</h3>
下記のリスト内の数値を小～大へ並び変えて画面出力しなさい。

```py
data_list=[10,1,5,2,7,2,0]
```
今回の勉強会で学習した if文、while文を使用して実装すること。
出力結果は以下の様に成る事。
```
0,1,2,2,5,7,10
```
注意点：
　・冗長な実装をしない事。
　・他人が読み易く実装する事。
　・実装内容を他人に説明できること
<h4>補足　ソート</h4>
「演習問題」の様に、値を順に並べる頃をソートと言います。

ソートには色々な手法があります。
以下は一例
・バブルソート
・ヒープソート
・クイックソート
etc

↓　ソートを分かり易くアニメ風に可視化した実例（C#）
https://qiita.com/r-ngtm/items/f4fa55c77459f63a5228

↓　Pythonの参考実装例
https://github.com/CoderDojoDazaifu/Works/tree/master/Python/Sort

<h4>今日はココまで～</h4>