Paiza Python入門編3:ループ処理を学ぼう

PaizaでPython3が完全無料なのでまとめました。

<a href="https://paiza.jp/works/python3/primer">Paiza Python3入門編

##01:数値を繰り返して表示しよう

```lesson.py
'''
for カウンタ変数 in 繰り返す範囲
    繰り返し処理
'''    
#カウンタ変数・・・繰り返しの対象のデータを入れる作業用の変数
#繰り返し処理は必ずインデントする


for i in range(5):
    print("hello world" + str(i))
    
for i in range(6,11):#6,7,8,...11で終了する
    print("hello world" + str(i))
    
#→6〜10まで表示される

print("last"+str(i))

#last10と表示される
```

##演習
1.「ハロー、paizaラーニング」を5回表示する

```lesson.py
for i in range(5):
    print("ハロー、paizaラーニング")
```

2.数値0から15まで表示する

```lesson.py
for i in range(16):
    print(i)
```
3.１月から12月まで表示する

```
for i in range(1,13):
    print(str(i) + "月" )
```

##02:条件に合わせて繰り返してみよう1

```lesson.py

i=1#カウンタ変数を初期化
while i<=10: #1,2,3...11 whileの条件式が満たされるまで繰り返される
    print(i)  #繰り返処理
    i = i + 1 #カウンタ変数を更新
    print("next" + str(i))
print("last"+str(i))

```

##演習

1.「ハロー、paizaラーニング」を5回表示する

```lesson.py
i=1#カウンタ変数を初期化
while i<=4:
    print("ハロー、paizaラーニング")  #繰り返処理
    i = i + 1 #カウンタ変数を更新
```

 2.数値を0から5まで表示する

```lesson.py
i=0#カウンタ変数を初期化
while i<=5: #1,2,3... whileの条件式が満たされるまで繰り返される
    print(i)  #繰り返処理
    i = i + 1 #カウンタ変数を更新

```

##03:条件に合わせて繰り返してみよう2

```lesson.py
#カウンタ変数「i= i+1」がないと、「無限ループ」になりタイムアウトになる

i = 5# カウンタ変数を初期化
while i <= 15:
    print(i)# 繰り返し処理
    # カウンタ変数を更新
print("last:" + str(i))
```


```lesson.py
#カウンタ変数書き方を変える「i +=1」

i = 5# カウンタ変数を初期化
while i <= 15:
    print(i)# 繰り返し処理
    i += 1# カウンタ変数を更新
print("last:" + str(i))
```

```lesson.py

#カウンタ変数書き方変える「i -=1」
#減らしていく演算子　不等号を「while i>=1」に変える
#10〜1まで

i = 10# カウンタ変数を初期化
while i >= 1:
    print(i)# 繰り返し処理
    i -= 1# カウンタ変数を更新
print("last:" + str(i))

```

```lesson.py
#スライムを攻撃
#ダメージは1から10までランダム
#スラムのHPが0になるまで繰り返す

import random
hp=30
while hp > 0:
    hit = random.randint(1,10)
    print("スライムに" + str(hit) + "のダメージを与えた!")
    hp -=hit
print("スライムを倒した")
```

##演習

1.5〜15まで、数値を１行ずつ表示する出力するプログラム

```lesson.py
i = 5# カウンタ変数を初期化
while i <= 15:
    print(i)# 繰り返し処理
    i += 1# カウンタ変数を更新
```

2.数値を5から1までカウントダウン表示する

```
i = 5 # カウンタ変数を初期化
while i >= 1:
    print(i)# 繰り返し処理
    i -= 1# カウンタ変数を更新
```

3.1から10までの偶数を表示する

```
i = 2 # カウンタ変数を初期化
while i <= 10:
    print(i)# 繰り返し処理
    i += 2# カウンタ変数を更新
```

##04:繰り返しでHTMLを作成しよう

```lesson.py


#HTMLタグの自動生成
#繰り返さないといけなくなる!
print("<select name=\'age\'>")
print("<option>1才</option>")
print("<option>2才</option>")
print("<option>3才</option>")
print("</select>")

#そんな時にfor文を使う

print("<select name=\'age\'>")
for age in range(10):
    print("<option>"+ str(age+1) + "才</option>")
print("</select>")

#range関数でrange(10)と出力すると1〜9までになる
```

##演習課題

・

```lesson.py

print("<ul>")
print("<li>1</li>")
print("<li>2</li>")
print("<li>3</li>")
print("</ul>")

#for文の繰り返し処理

print("<ul>")
for age in range(100):
    print("<li>"+ str(age+1) + "</li>")
print("</ul>")
```


##05:データの読み込み(標準入力)
```
・プログラムの流れ

データを入力
↓
プログラムで処理
↓
理結果を出力



・データ入力の種類

----------------------
Webサービス/API

データベース

ファイル

キーボード実行時に指定
----------------------

↓入力

プログラム実行


・標準入力とは
もともとUnixの仕組み

----------------------
ファイル

キーボード

実行時に指定

----------------------
↓
標準入力
↓
プログラム実行


```
<strong>標準入力とは</strong>
もともとはLINUXなどのUnix系OSで用意されていた仕組みです。
標準入力に対応するようにプログラムを作っておけば、プログラム実行時に、ファイルを読み込んだり、キーボードからデータを読み込んだり、パラメータを指定したりというように、入力先を切り替えることができます。

<strong>input()関数</strong>
標準入力から1行読み込む

```lesson.py
入力
paiza

line=input()

print("hello" + line)

出力
hellopaiza

```

```lesson.py

入力
123

#数値の場合はintをつける

line=int(input())

print(line*10)

出力
1230
```

##演習

1.標準入力からテキストを取得する

```lesson.py
入力
ハローパイザ

string=input()

print(string)

出力ハローパイザ
```

2.標準入力から数値を取得して計算する

```lesson.py

入力
1234

line=int(input())

print(line*100)

出力
123400

```


##06:複数データを読み込んでみよう


```lesson.py
入力
paiza
python


line = input()
print("hello " + line)
line = input()
print("hello " + line)

出力
hello paiza
hello python

#複数行標準入力したい

入力
3
paiza
python
world

count=int(input())
print("データ個数" + str(count))
for i in range(count):
    line = input ().rstrip()
#rstripでデータの行末を削除
    print("hello " + line)

出力
データ個数3
hello paiza
hello python
hello world

```


<strong>rstrip()関数</strong>
データの行末の改行を削除する。
改行が残っていると、その後の処理に悪影響を及ぼすことがあるので、ここで削除しています。インプットの後に、ドットに続けて記述することで、インプットの戻り値の改行を削除することができます。

```lesson.py

入力
4
勇者
戦士
商人
魔法使い

count=int(input())
print("データ個数" + str(count))
for i in range(count):
    line = input ().rstrip()
    print(line + "は、スライムを攻撃した")

出力
データ個数4
勇者は、スライムを攻撃した
戦士は、スライムを攻撃した
商人は、スライムを攻撃した
魔法使いは、スライムを攻撃した
```


##演習

1.同じテキストを指定回数出力する

```lesson.py
入力
8

count=int(input())
for i in range(count):
    print("スライムがあられた")

出力
スライムがあられた
スライムがあられた
スライムがあられた
スライムがあられた
スライムがあられた
スライムがあられた
スライムがあられた
スライムがあられた
```

2.標準入力とfor文の組み合わせ

```lesson.py
入力
5
12

# 標準入力とループ処理
num1 = int(input())
num2 = int(input())

for i in range(num1, num2 + 1):
    print(i)

5
6
7
8
9
10
11
12
```


##07:西暦年と平成年の対応表を作ろう

```lesson.py
for seireki in range(1989,2017):
    print("西暦"+ str(seireki) +"年", end=" ")
    heisei = seireki -1988
    print("平成"+ str(heisei)+"年です。")

出力
西暦1926年は昭和1年です
西暦1927年は昭和2年です
:
:
西暦1988年は昭和63年です

```


##演習

1.西暦年と昭和年の対応表を作ろう

```lesson.py
for seireki in range(1926,1989):
    print("西暦"+ str(seireki) +"年は",end="")
    heisei = seireki -1925
    print("昭和"+ str(heisei)+"年です")

```

2.特定期間の西暦年と昭和年の対応表を作ろう

```lesson.py
入力
1975
10

start = int(input())
term = int(input())

for seireki in range(start, start + term):
    print("西暦" + str(seireki) + "年は", end = "")
    shouwa = seireki - 1925
    print("昭和" + str(shouwa) + "年です")

出力

西暦1926年は昭和1年です
西暦1927年は昭和2年です
:
:
西暦1987年は昭和62年です

```