プログラミング初心者のためのpython[超入門編]ver.４

#引数と戻り値
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/63a99d7c-eefb-1f16-9953-5b88b8d73bb6.png)A3：ピーちゃん、どうしたのかな・・・全然会わないんだけど・・・
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/d1a0e068-2ae2-e838-87ab-74f6e10af6f3.png)ピーちゃん：呼んだー？？
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/63a99d7c-eefb-1f16-9953-5b88b8d73bb6.png)A3：目の下のクマひどいねー。最近、忙しいの？
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/d1a0e068-2ae2-e838-87ab-74f6e10af6f3.png)ピーちゃん：ダメ男に振り回されて病んでたの
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/63a99d7c-eefb-1f16-9953-5b88b8d73bb6.png)A3：35億もひよこがいるんだから、新しいガム食べたらいいのに
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/93460d39-8a05-8408-38dd-1f0c37a0a5bb.png)ピーちゃん：前に関数についてお話ししたけど覚えてる？
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/192700a3-8ce8-cb65-83e7-b2b87e7384e7.png)A3：関数は変数を入れて処理すると結果が出て違う変数になるってことだよね？
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/93460d39-8a05-8408-38dd-1f0c37a0a5bb.png)ピーちゃん：そう！詳しく言うと関数で処理する変数のことを引数っていうの。関数で処理した結果の変数のことを戻り値っていうんだ。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/ecb1770c-53d8-c6ef-4c25-0743306382b0.png)A3：うーーーーん。あたまがごちごちゃしてきた。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/93460d39-8a05-8408-38dd-1f0c37a0a5bb.png)ピーちゃん：つまりこーゆーことだよ☆
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/d92eee44-cebb-b0e0-2e1d-d3b4c272597b.png)


![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/192700a3-8ce8-cb65-83e7-b2b87e7384e7.png)A3：おお！そうゆうことか！引数も戻り値も変数だけど、関数で処理するときに名前が変わるんだね。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/93460d39-8a05-8408-38dd-1f0c37a0a5bb.png)ピーちゃん：そうそう。引数っていうのは関数に渡す値で関数で処理した結果が戻り値って覚えてね☆プログラミングでは関数を使うとき、引数と戻り値の考え方が大切だから忘れないで☆

#def文
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/63a99d7c-eefb-1f16-9953-5b88b8d73bb6.png)A3：ピーちゃんが教えてくれた組み込み関数でpythonには自由に使える関数と使えない関数があるけど、この組み込み関数だけじゃなんかものたりないよ・・・・
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/93460d39-8a05-8408-38dd-1f0c37a0a5bb.png)ピーちゃん：そうだね～。実はpythonの関数は自分で作ることができるんだ！
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/63a99d7c-eefb-1f16-9953-5b88b8d73bb6.png)A3：関数を自分で作ることができるの？！知らなかった！
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/93460d39-8a05-8408-38dd-1f0c37a0a5bb.png)ピーちゃん：関数の作り方を簡単に言うと「def」っていうのを一番最初に書くの。これは関数ですって宣言をすることになるんだ。コードを書くイメージとしてはこんな感じだよ！defで関数を宣言したら戻り値はreturnで指定してね！
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/f9faa2ba-7fdf-2d36-c759-689b0d3f672b.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/63a99d7c-eefb-1f16-9953-5b88b8d73bb6.png)A3：こんな感じに書けたよ！returnがなくてもprintでできたよ☆

```A3ちゃんが書いたdef文.py
def add(x, y):
    print(x + y)
add(3, 16) 
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/93460d39-8a05-8408-38dd-1f0c37a0a5bb.png)ピーちゃん：そのコードはaddが3と16を定義して呼び出しているから大丈夫なんだ。でも、こんな風にprintを使ったコードを書いたらとどう動くかな？？

```ピーちゃんが書いたdef文①.py
def add(x, y):
    print(x + y)
n = add(3, 16) 
print(n)
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/63a99d7c-eefb-1f16-9953-5b88b8d73bb6.png)A3：Noneってでるんだね。これってエラーってことだよね・・・
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/93460d39-8a05-8408-38dd-1f0c37a0a5bb.png)ピーちゃん：return を書かないと関数は Noneを返しちゃうんだ。

```ピーちゃんが書いたdef文②.py
def add(x, y):
    ans = x + y
    return ans
n = add(3, 16) 
print(n)
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/93460d39-8a05-8408-38dd-1f0c37a0a5bb.png)ピーちゃん：print関数は引数で戻り値を指定しない場合は表示させることができるけど、引数で戻り値を指定しないといけない場合はreturnを使おうね！引数が文字列の場合はprint関数で大丈夫な時が多いけど、数値が引数の場合はreturnを忘れないようにしよう！

#モジュールとパッケージ
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/93460d39-8a05-8408-38dd-1f0c37a0a5bb.png)ピーちゃん：pythonにはいろんな人が関数を作ってくれているんだ。自分が欲しいな~っていう処理をしてくれるコードを書いておいてファイルにしてあるものをモジュールっていうの。.pyって必ず書いてあるから覚えておこう！
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/939254f2-9504-365e-7f3d-664468c1a2c4.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/63a99d7c-eefb-1f16-9953-5b88b8d73bb6.png)A3：それって勝手につかっても平気なの？著作権とか請求されない？
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/93460d39-8a05-8408-38dd-1f0c37a0a5bb.png)ピーちゃん：うん。大丈夫だよ。複数のモジュールをまとめて使えるようにしてあるファイルのことをパッケージっていうんだ。実はAnacondaにはいろんなパッケージがあるんだよ☆
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/ccf7ad7c-6e5e-13be-5206-73096289a1d5.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/93460d39-8a05-8408-38dd-1f0c37a0a5bb.png)ピーちゃん：このパッケージも自分でつくることができるんだ！

```m1.py
def m1func():
    print("これはm1.")
```
```m2.py
def m2func():
    print("これはm2.")
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/93460d39-8a05-8408-38dd-1f0c37a0a5bb.png)ピーちゃん:これでモジュールをつくることはできたよ！この二つのモジュールがPythonにパッケージですよ！って伝えるためには「＿＿init＿＿.py」というファイルを作らないとだめなの。＿＿init＿＿.pyの中身は空でも大丈夫だから空の__init__.pyのファイルを作成しておこうね！

```
module
├── __init__.py
├── m1.py
└── m2.py
 
0 directories, 3 files
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/93460d39-8a05-8408-38dd-1f0c37a0a5bb.png)ピーちゃん:パッケージを呼び出すにはimport　パッケージ名で呼び出せるよ！

```
import module
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/63a99d7c-eefb-1f16-9953-5b88b8d73bb6.png)A3：モジュールを呼び出すときと同じだね！モジュールもパッケージも呼び出して使うことができるようになったら、いろんな処理ができるようになるね～！

https://docs.python.jp/3/tutorial/modules.html#the-dir-function


#比較演算子
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/93460d39-8a05-8408-38dd-1f0c37a0a5bb.png)ピーちゃん：演算子とは計算する処理のことだよ☆よく使うものをピックアップしておいたから、これも覚えていこ！

| 比較演算子     　 |意味　　　　　     | 
|:-----------------|:-----------------|
|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          |a が b と異なる
|a is b          |  a が b と等しい
|a is not b      |a が b と異なる
|a in b          | a が b に含まれる
|a not in b      | a が b に含まれない
#ブール演算子
|ブール演算子     　 |意味　　　　　     | 
|:-----------------|:-----------------|
|a and b         | a も b も真であれば真
|a or b          | a または b が真であれば真
|not a          |  a が偽であれば真

#文字列演算子
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/93460d39-8a05-8408-38dd-1f0c37a0a5bb.png)ピーちゃん：文字列演算子は文字列を扱うときに使う演算子だよ～！

| 文字列演算子     　 |意味　　　　　     　　　　　　　　　　| 
|:-------------------|:-------------------------------------|
|a + b        　　　　　　　| # 文字列 a と 文字列 b を連結
|a * n        　　　        |# 文字列 a を n 回繰り返します
|a[n]         　　　        | # 文字列 a の中の n 番目の文字を取り出す
|a[n:m]        　　　       | # 文字列 a の中の n 番目から m 番目までの文字列を取り出す
|a[n:]           　　　     | # 文字列 a の中の n 番目から最後までの文字列を取り出す
|a[:m]           　　　     | # 文字列 a の中の 0 番目から m 番目までの文字列を取り出す
|a[n: m :s]        　　　     | # 文字列 a の中の n 番目から m 番目までの文字列を s個とばしで取り出す

参照URL
https://docs.python.org/ja/3.6/reference/expressions.html#operator-precedence

![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/d1a0e068-2ae2-e838-87ab-74f6e10af6f3.png)ピーちゃん：今日こそはif文の説明をしたかったんだけど、美容と健康に悪いから次回説明するね・・・
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/63a99d7c-eefb-1f16-9953-5b88b8d73bb6.png)A3：うん。今日ははdef文とモジュールとか演算子とか覚えること増えてきたから復習がんばるよ～！
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/d1a0e068-2ae2-e838-87ab-74f6e10af6f3.png)ピーちゃん：課題とダメ男・・・がんばるね・・・
![image.png](https://qiita-image-store.s3.amazonaws.com/0/211326/63a99d7c-eefb-1f16-9953-5b88b8d73bb6.png)A3：頑張りどころが違う気がする・・・