Python3メモ⑦(ループ)

Pythonにはwhileとforの2つのループがあります(do~whileはありません)。
特徴の一つに、両方ともループにelseがつけられることです(ループの最後に実行するブロック)。
また、Pythonのforは、CやJavaのfor文というよりも、PHPでのforeachに近いです。

while

while は「条件文が真のあいだ」処理が繰り返されます。

1
2
3
4
5
6
7
8
9
10

上の条件は「iが10以下のあいだ」処理が繰り返されます。

break

1
2
3
4

breakを使えば「条件文が真のあいだ」でも途中でループを抜けます。

continue

1
3
5
7
9

continueは、continue以降の処理をスキップ(途中を抜かして先へ進む)する時に使います。
if i % 2 ==0:は、2で割った余りが0ならば(=偶数ならば)以降の処理(print(i))を飛ばしていますので、奇数のみprintされます。

こういうwhileループも

例えば下のようなコードで、整数以外を入力するとエラーになります。

これを、整数を入力するまで繰り返すコードにするとこうなります。
try-exceptを使った例外処理を使っています。
※エラーと例外参照
https://docs.python.org/ja/3/tutorial/errors.html

while True で無限ループします。どこかでbreakを入れないと回り続けますので注意して下さい。

for

forはいわゆるコレクション型、Pythonで言うならリスト型、タプル型、辞書型(複数個のデータが一つの変数になっているデータの集まり。後述します)などをループします。
breakもcontinueも当然使えます。

下の例はrange関数で0~9まで10個の整数を返します(range型)。

0
1
2
3
4
5
6
7
8
9

range

range型をリスト型にキャストして表示してみます。

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 5, 10, 15, 20, 25]

range([始まりの整数,] 最後の整数+1[, 増加する量])
[]内は省略可能です。

世界のナベアツ問題

世界のナベアツこと桂三度さんの持ちネタは、プログラミング初学者の練習になります。

1から50まで1秒毎にprintするプログラムを考えて下さい。
ただし、3の倍数と3が付く数字だけアホになり、5の倍数だけ犬っぽくなります。

「1秒毎に~」は標準モジュールのtimeを読み込んでsleepメソッドで行います。

アホは「アホ」と表示し、犬っぽくは「犬」と表示します。
3の倍数と5の倍数は簡単で、3で割って余り0なら3の倍数だし、5で割って余り0なら5の倍数です。
3が付く数字は少し難しく、整数を文字列にしてから3が含んでいるのを探すのかと思いましたが、10で割った値を整数にして、それが3ならばいいみたいです(50までなので)。

1
2
3(アホ)
4
5(犬)
6(アホ)
7
8
9(アホ)
10(犬)
11
12(アホ)
13
14
15(アホ犬)
16
17
18(アホ)
19
20(犬)
21(アホ)
22
23
24(アホ)
25(犬)
26
27(アホ)
28
29
30(アホ犬)
31(アホ)
32(アホ)
33(アホ)
34(アホ)
35(アホ犬)
36(アホ)
37(アホ)
38(アホ)
39(アホ)
40(犬)
41
42(アホ)
43
44
45(アホ犬)
46
47
48(アホ)
49
50(犬)

今回は以上です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする