事業企画1年目のpython学習4日目

# 本記事について
とある事業会社で事業企画をやっています。
元々は、新規営業1年→エンプラ営業3年やっていました。
事業企画への異動に伴って、ルーチンワークの自動化やスクレイピングに興味を持ちpython学習をスタートしました。
目的達成までは記事を執筆予定です。どうぞよろしくお願いいたします。

# 開発環境
jupyterlab

# 使っている本
すっきりわかるpython入門
https://sukkiri.jp/books/sukkiri_python

# 勉強計画
週5日間ミニマム1h勉強する。
最初の1weekは1冊終わらせることをgoalに。
start@ 2022/2/21

# 学習時間
１.0h

# 学び
今日は繰り返しを学びたいと思います〜


### 繰り返しの基本構造(まずはwhileから)



羊が増えていく。
```py
print("let's sleep")
count = 0
count += 1
print ( 'sheep is {}'.format(count))
count += 1
print ( 'sheep is {}'.format(count))
count += 1
print ( 'sheep is {}'.format(count))
print('good night')
#let's sleep
#sheep is 1
#sheep is 2
#sheep is 3
#good night

```

描き続けるのだるいから、楽にしましょう。

```py
count = 0
while count <3:
    count +=1
    print('sheapi is {}'.format(count))
print('good night')
#sheapi is 1
#sheapi is 2
#sheapi is 3
#good night

```

whileブロックを指定し損ねると無限ループになる。
無限るーぷを止める方法は、jupyterLabでは、■ボタン押すと良い。

### 状態による繰り返し

```py

is_awake= True
count = 0
while is_awake==True:
    count+=1
    print('sheap is {}'.format(count))
    key = input('already sleepy？ (y/n) >>')
    if key == 'y':
        is_awake == False
print('good night')

```
### 繰り返しによるリストの作成

```py

count=0
student_num = int(input('学生の数は? >>'))
score_list = list() #空のリストを作成している
while count <student_num:　#入力された学生の数より少なければ繰り返し
    count += 1
    score = int(input('{}一目の点数を入力 >>'.format(count)))
    score_list.append(score)　#入力された得点をリストに追加
print(score_list)
total = sum(score_list)
print('平均点は、{}点です'.format(total /student_num))
#学生の数は? >> 5
#1一目の点数を入力 >> 50
#2一目の点数を入力 >> 50
#3一目の点数を入力 >> 50
#4一目の点数を入力 >> 50
#5一目の点数を入力 >> 50
#[50, 50, 50, 50, 50]
#平均点は、50.0点です

```

この構文はよく使う。

カウンタ変数 = 0
while　カウンタ変数 < len(リスト):
   リスト[カウンタ変数]を使った処理
　　　　　カウンタ変数 +=1

### リストの全要素を繰り返し参照する

```py

#リスト内の合否判定をしていく。
scores = [80,70,60,50,40]
count = 0
while count < len(scores): 
    if scores[count] >= 60:
        print('passed')
    else:
        print('unpassed')
    count += 1
passed
passed
passed
unpassed
unpassed

```

### for文

for変数 in リスト：
繰り返し処理。
タプルやディクショナリ、セットでも使えます。

```py
scores = [80,20,75,60]
for data in scores:
    if data >60 :
        print('passed')
    else:
        print('unpassed')
#passed
#unpassed
#passed
#unpassed

```

range関数は、0から指定した数より1小さい整数までの要素を持つ整数列を作れる。
例えば、range(3)だと、0,1,2という整数列を作れる。

```py
for num in range(3):
    print('python is fun')
#python is fun
#python is fun
#python is fun

```

### 繰り返しの制御
```py
ages = [28,50,8,20,78,25,22,10,27,33]
num = 5
samples = list()
for data in ages:
    if 20 <= data < 30 :
        if len(samples) <num:
            samples.append(data)
            if len(samples) == num:
                break #抽出数が目標に達したので、for文を終了。
print(samples)
#[28, 20, 25, 22, 27]

```

### 繰り返しのスキップ

```py
ages = [28, 50, 8, 20, 78, 25, 22, 10, 27, 33, '秘密']
samples = list()　#空のリストを作る
for data in ages:
    if not isinstance(data, int): #文字列があった場合は、スキップ
        continue
    if data < 20 or data >= 30:　#２0歳より下、30より上の場合スキップ
        continue
    samples.append(data)
print(samples)
#[28, 20, 25, 22, 27]

```
continue文は、現在の回だけを中断し、次の回へ。
breake文は、繰り返し自体を中断する。

# 今日ミスったところ
if文の=を1つにしてしまったり、elseの:を忘れてしまったり・・・。

# 感想　
気づけば4日目。業務が忙しくならないことを祈り続ける日々です。そして、基礎編は終わり次回からは色々と本格的になっていく模様です。
通常の業務は大体9:00~20:00で今は終えていますが、前の営業時代は8:00-22:00とかもザラだったのでより早く追えられるよう、日々の生産性を意識しながら準備をしていきます。
今日は、なんかプログラミングっぽくて楽しかったです。
早く業務で使えるようになりたいな〜なんて思っていますが、たくさんのエラーに困らされそうです。
困った際はqiitaに質問をして皆さんに助けていただきたいな〜なんて思っています。
それでは本日もお疲れ様でした。