動画

課題

課題(チャプター5:繰り返し)

【基本問題】for文とリスト(6問)

問題1

変数items["りんご", "みかん", "ぶどう"]を代入し、for文を使って要素を1行に1つずつ画面に表示するプログラムを作成してください。

期待される出力:

りんご
みかん
ぶどう

ヒント: for 変数 in リスト: のあと、ループ本体はインデントします。

問題2

変数scores[88, 92, 79]を代入し、for文で各点数を「点数: ○○点」の形で1行ずつ表示するプログラムを作成してください。

期待される出力:

点数: 88点
点数: 92点
点数: 79点

ヒント: print("点数:", s, "点") のように文字列と変数を並べてもよいです。

問題3

変数nums[3, 1, 4, 1, 5]を代入し、for文ですべての数を順に表示したあと、ループのprint("終わり")を1回だけ実行するプログラムを作成してください。

期待される出力:

3
1
4
1
5
終わり

ヒント: print("終わり")のインデントをforと同じ段にすると、ループの外になります。

問題4

空のリストvalues = []に対してfor v in values:print(v)を繰り返すプログラムを作成し、続けてprint("件数0")を表示してください。

期待される出力:

件数0

ヒント: 要素がないリストでは、ループ本体は1回も実行されません。

問題5

変数prices[100, 250, 80]を代入し、for文で税込み(10%)の金額を整数のまま1行ずつ表示してください。計算式はint(p * 1.1)pは各要素)でよいものとします。

期待される出力:

110
275
88

ヒント: ループ変数にpricesの各要素を順に入れます。

問題6

変数words["Python", "は", "楽しい"]を代入し、for文で各要素を表示するプログラムを作成してください。ループ変数の名前はwordにしてください(命名の練習)。

期待される出力:

Python
は
楽しい

ヒント: for word in words: と書きます。

【基本問題】for文で集計(5問)

問題7

変数scores[72, 85, 90]を代入し、for文で合計を求めてprint("合計:", total)で表示するプログラムを作成してください。初期値はtotal = 0から始めます。

期待される出力:

合計: 247

ヒント: 台本の例のとおり total = total + s を繰り返します。

問題8

変数data[10, 20, 15, 5]を代入し、for文で平均を求めてprint("平均:", avg)で表示してください。平均は合計 ÷ 要素の個数とし、整数除算//でよいものとします。

期待される出力:

平均: 12

ヒント: まず合計をforで求め、ループの外でavg = total // 4のように割ります。

問題9

変数nums[3, 8, 2, 11, 4]を代入し、for文で10より大きい値の個数を数え、print("10より大きい個数:", count)と表示してください。

期待される出力:

10より大きい個数: 1

ヒント: if n > 10: のときだけ count を1増やします。

問題10

変数nums[2, -1, 5, -3, 7]を代入し、for文で正の数だけ足し合わせた合計を表示してください(print("正だけの合計:", total))。

期待される出力:

正だけの合計: 14

ヒント: if n > 0: のときだけ total に加えます。

問題11

変数nums[5, 12, 8, 12, 3]を代入し、for文で最大値を求めて表示してください(max関数は使わないこと)。print("最大:", best)とします。

期待される出力:

最大: 12

ヒント: 最初はbest = nums[0]などとし、大きい値が出たらbestを置き換えます。

【基本問題】文字列とfor文(3問)

問題12

変数text"ABC"を代入し、for c in text:で1文字ずつprint(c)するプログラムを作成してください。

期待される出力:

A
B
C

ヒント: 文字列もforで1文字ずつ取り出せます。

問題13

変数s"hello"を代入し、for文で文字"l"何文字あるか数え、print("lの個数:", count)と表示してください。

期待される出力:

lの個数: 2

ヒント: if c == "l": のとき count を増やします。

問題14

変数password"ab12"を代入し、for文で各文字について、数字(0〜9)ならD、それ以外ならXを1行に1つずつ表示してください(ch.isdigit()を使ってよい)。

期待される出力:

X
X
D
D

ヒント: if ch.isdigit(): print("D") のように分岐します。

【基本問題】range関数(9問)

問題15

for i in range(4):を使い、iを1行ずつ表示するプログラムを作成してください。

期待される出力:

0
1
2
3

ヒント: range(4)は0から3までです。

問題16

for i in range(1, 5):を使い、iを1行ずつ表示するプログラムを作成してください。

期待される出力:

1
2
3
4

ヒント: 終了値5は含まれません

問題17

for i in range(1, 10, 2):を使い、iを1行ずつ表示するプログラムを作成してください。

期待される出力:

1
3
5
7
9

ヒント: 第3引数はステップ(間隔)です。

問題18

for i in range(10, 0, -2):を使い、iを1行ずつ表示するプログラムを作成してください。

期待される出力:

10
8
6
4
2

ヒント: 負のステップでは、終了値0は含まれません(台本のカウントダウン例)。

問題19

rangeforを使い、1から10までの整数の合計を求め、print("1〜10の合計:", total)と表示してください。

期待される出力:

1〜10の合計: 55

ヒント: for i in range(1, 11): を使います。

問題20

for i in range(1, 6):を使い、i2乗i * i)を1行ずつ表示するプログラムを作成してください。

期待される出力:

1
4
9
16
25

ヒント: ループの中でprint(i * i)します。

問題21

リストnames = ["太郎", "花子", "次郎"]に対し、for i in range(len(names)):を使って、「0: 太郎」のようにインデックスと名前を1行ずつ表示するプログラムを作成してください。

期待される出力:

0: 太郎
1: 花子
2: 次郎

ヒント: print(i, ":", names[i], sep="") などで整形できます。

問題22

for i in range(5):のあと、ループの外でprint("最後のiは", i)を実行するプログラムを作成してください(ループ終了後のiの値に注目)。

期待される出力:

最後のiは 4

ヒント: range(5)の最後のiは4です。

問題23

n = 3としたとき、for i in range(n):のループが回る回数を、ループの外でprint("回数は", n, "回")ではなく、カウンタkをループ内で増やして求め、print("実際に回った回数:", k)と表示するプログラムを作成してください。

期待される出力:

実際に回った回数: 3

ヒント: ループの先頭でk = 0、ループ内でk = k + 1

【基本問題】while文(7問)

問題24

n = 0から始め、while n < 3:nを表示し、毎回n = n + 1するプログラムを作成してください(台本の例に近い形)。

期待される出力:

0
1
2

ヒント: ループの中で必ずnを更新します。

問題25

n = 1から始め、while n <= 5:のあいだprint(n)し、n = n + 1するプログラムを作成してください。

期待される出力:

1
2
3
4
5

ヒント: 条件が偽になる直前まで繰り返します。

問題26

total = 0n = 1から始め、while n <= 4:のあいだtotal = total + nし、n = n + 1するプログラムを作成し、最後にprint("合計:", total)してください。

期待される出力:

合計: 10

ヒント: 1+2+3+4=10です。

問題27

n = 10から始め、while n > 0:のあいだprint(n)し、n = n - 3するプログラムを作成してください。

期待される出力:

10
7
4
1

ヒント: 次は7, 4, 1となり、次が-2で条件が偽になります。

問題28

while 0: のループ本体に print("A") を書き、whileと同じインデント段で print("B") を書くプログラムを作成してください。条件が最初から偽のとき、ループ本体は1回も実行されないことを確認します。

期待される出力:

B

ヒント: 表示されるのはループのprint("B")だけです。

問題29

password = "yes" としたあと、いったんpassword = "ok" と代入してから、while password != "ok": のあいだ print("待機中") するプログラムを作成してください。ループ本体は1回も実行されない例です。

期待される出力:

ヒント: whileに入る前に、すでにpassword"ok"になっている必要があります。出力が空でも正解です。

問題30

count = 0から始め、while count < 100: のあいだ毎回 count = count + 25 し、各回 print(count) するプログラムを作成してください。

期待される出力:

25
50
75
100

ヒント: countが100になったあと、条件が偽になり終了します。

【基本問題】二重ループ(6問)

問題31

台本の例に近い形で、for row in range(1, 3):for col in ["A", "B"]: の二重ループを書き、print(row, col) で行と列を1行ずつ表示するプログラムを作成してください。

期待される出力:

1 A
1 B
2 A
2 B

ヒント: 外側が1周するたびに、内側がすべて回り切ります。

問題32

for i in range(2):for j in range(3): の二重ループで、print(i, j) を実行するプログラムを作成してください。

期待される出力:

0 0
0 1
0 2
1 0
1 1
1 2

ヒント: 内側のjが0→1→2と進んでから、iが増えます。

問題33

二重ループ for a in range(1, 4):for b in range(1, 4): で、print(a * b) を実行するプログラムを作成してください。

期待される出力:

1
2
3
2
4
6
3
6
9

ヒント: 内側が3回×外側が3回で、合計9行です。

問題34

変数total = 0を用意し、for i in range(2):for j in range(3): の二重ループの中で total = total + 1 するプログラムを作成し、最後に print(total) してください。

期待される出力:

6

ヒント: 2×3=6回です。

問題35

外側を for color in ["赤", "青"]:、内側を for size in ["S", "M"]: とし、print(color, size) するプログラムを作成してください。内側・外側で違う変数名を使う練習です。

期待される出力:

赤 S
赤 M
青 S
青 M

ヒント: 両方ともiにしないでください。

問題36

for i in range(3): の中に for j in range(2): を書き、内側でだけ print("*", end="") を実行し、内側ループのあと(外側のインデント段)で print() を実行して改行するプログラムを作成してください。

期待される出力:

**
**
**

ヒント: print()の引数なしは改行だけです。

【基本問題】continueとbreak(6問)

問題37

リストnums = [1, 2, 3, 4, 5]に対し、for x in nums: で、xが偶数のときは continue し、奇数だけ print(x) するプログラムを作成してください。

期待される出力:

1
3
5

ヒント: if x % 2 == 0: のとき continue します。

問題38

リストvalues = [5, -2, 8, -1, 3]に対し、負の数のときは continue してスキップし、0以上だけを足し合わせ、最後に print("合計:", total) してください。

期待される出力:

合計: 16

ヒント: if v < 0: のとき continue します。

問題39

リストnums = [3, 1, 4, 1, 5]for n in nums:で調べ、n == 4 になったら print("見つけた") のあと break し、それ以外のときは print(n) するプログラムを作成してください(台本のbreak例に近い順序)。

期待される出力:

3
1
見つけた

ヒント: 先にif n == 4:で分岐し、break前にメッセージを出します。

問題40

for i in range(10): の中で print(i) し、その直後に i == 7 なら break するプログラムを作成してください。

期待される出力:

0
1
2
3
4
5
6
7

ヒント: 7を表示したあとで抜けます。

問題41

二重ループ for i in range(2):for j in range(3): で、j == 1 のとき内側だけ continue し、それ以外は print(i, j) するプログラムを作成してください。

期待される出力:

0 0
0 2
1 0
1 2

ヒント: continue一番内側のループの次の繰り返しへ進みます。

問題42

for n in range(10, 25): の中で、n7の倍数n % 7 == 0)になったらその数だけ print(n) して break するプログラムを作成してください。

期待される出力:

14

ヒント: 10以上で最初に来る7の倍数は14です。

【基本問題】ループのelse(4問)

問題43

for n in [1, 3, 5]:n == 0 なら break とし、forelse:を付けて print("0はなかった") とするプログラムを作成してください。

期待される出力:

0はなかった

ヒント: if-elseとは別物のfor-elseです。

問題44

for n in [2, 4, 6, 8]:n == 6 なら break とし、else:print("最後まで") とするプログラムを作成してください。

期待される出力:

ヒント: breakされるとelseは実行されません。出力は空で正解です。

問題45

n = 0からwhile n < 3:n = n + 1するループにelse:を付け、print("while完了")と表示するプログラムを作成してください(breakは使わないこと)。

期待される出力:

while完了

ヒント: breakされずにwhileの条件が偽になったあと、elseが実行されます。

問題46

n = 0からwhile n < 5:の中で、まずif n == 2:ならbreakし、そうでなければn = n + 1するプログラムを作成し、whileelse:を付けてprint("else実行")と書いてください。

期待される出力:

ヒント: nが0→1→2となり、2でbreakするためelseは動きません。出力は空で正解です。

【応用問題】(4問)

問題47

台本の例に近い形で、while True: の中でカウンタを使い、1回目はline = "no"、2回目はline = "ok"と代入するプログラムを作成してください。line == "ok"ならprint("終了")してbreakし、そうでなければprint("もう一度")してください。

期待される出力:

もう一度
終了

ヒント: t = 0から始め、毎回t = t + 1で分岐してもよいです。

問題48

while True:で、カウンタで1周目にchoice = "1"、2周目にchoice = "9"を代入するプログラムを作成してください。choice == "9"print("終了")してbreakchoice == "1"のときはprint("プレイ")、それ以外はprint("無効")としてください。

期待される出力:

プレイ
終了

ヒント: メニュー画面のイメージです。

問題49

次のプログラムと同じ動きになるコードを書き、実行したとき最後の1行が期待どおりになることを確認してください。

k = 0
for i in range(4):
    for j in range(5):
        print(i, j)
        k = k + 1
print("行数は", k, "行")

期待される出力(最後の1行):

行数は 20 行

ヒント: 二重ループの回数は掛け算です。4×5=20。

問題50

forrangeを使い、九九の1の段1×1から1×9まで)を1 x 1 = 1のような形で9行出力するプログラムを作成してください(記号は半角のxでよい)。

期待される出力:

1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
1 x 4 = 4
1 x 5 = 5
1 x 6 = 6
1 x 7 = 7
1 x 8 = 8
1 x 9 = 9

ヒント: for k in range(1, 10): とし、左は常に1です。

お気軽に無料相談を

オンラインで気軽にご相談ができます。入校お申込みもこちらから。