第7回:繰り返し処理(解答)#
演習1:for
文による繰り返し処理#
演習1-1#
以下の出力結果となるようにrange
関数とfor
文を用いて処理を作成せよ.
出力
1
2
4
8
16
32
64
128
256
512
1024
# 解答
for i in range(11):
a = 2 ** i
print(a)
1
2
4
8
16
32
64
128
256
512
1024
演習1-2#
range
関数とfor
文を用いて以下の要素を持つリストを作成せよ.
ヒント:append
関数を使うとリストに要素を追加できる.
出力
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
# 解答
l_loop = []
for i in range(0, 22, 2):
l_loop.append(i)
print(l_loop)
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
演習1-3#
for
文は文字列も繰り返すことができる.文字列abcdef
を作成し,リストの代わりに文字列をfor
文で繰り返した結果を確認せよ.正しく実行ができると以下の出力結果となるはずである.
出力
a
b
c
d
e
f
# 解答用セル
ss = 'abcdef'
for s in ss:
print(s)
a
b
c
d
e
f
演習1-4#
演習1-3をベースに文字列からの文字の取り出しと,繰り返し回数を同時に出力せよ. 参考までに以下のような出力例が得られると良い.
出力
文字: a - 繰り返し回数: 1
文字: b - 繰り返し回数: 2
文字: c - 繰り返し回数: 3
文字: d - 繰り返し回数: 4
文字: e - 繰り返し回数: 5
文字: f - 繰り返し回数: 6
# 解答例
ss = 'abcdef'
i = 1
for s in ss:
print(f'文字: {s} - 繰り返し回数: {i}')
i = i + 1
文字: a - 繰り返し回数: 1
文字: b - 繰り返し回数: 2
文字: c - 繰り返し回数: 3
文字: d - 繰り返し回数: 4
文字: e - 繰り返し回数: 5
文字: f - 繰り返し回数: 6
# 解答例
ss = 'abcdef'
i = 1
for i, s in enumerate(ss):
print(f'文字: {s} - 繰り返し回数: {i}')
i = i + 1
文字: a - 繰り返し回数: 0
文字: b - 繰り返し回数: 1
文字: c - 繰り返し回数: 2
文字: d - 繰り返し回数: 3
文字: e - 繰り返し回数: 4
文字: f - 繰り返し回数: 5
演習1-5#
演習1-3と1-4を参考に以下の出力結果となるような繰り返し処理を作成せよ.
出力
aaaaaa
bbbbb
cccc
ddd
ee
f
# 解答例
ss = 'abcdef'
i = 1
total = len(ss)
for s in ss:
print(s*(total - i + 1))
i = i + 1
aaaaaa
bbbbb
cccc
ddd
ee
f
# 解答例
ss = 'abcdef'
i = 1
total = len(ss)
for i, s in enumerate(ss):
print(s*(total - i))
aaaaaa
bbbbb
cccc
ddd
ee
f
演習2:繰り返し処理と条件分岐#
演習2-1#
1から20までの整数を出力する際に,その数が偶数であれば”偶数”,奇数であれば”奇数”と出力するプログラムを繰り返し処理を用いて作成せよ
出力
1: 奇数
2: 偶数
3: 奇数
4: 偶数
...
# 解答セル
# 解答例
for i in range(1, 21):
if i % 2 == 0:
print(f"{i}: 偶数")
else:
print(f"{i}: 奇数")
1: 奇数
2: 偶数
3: 奇数
4: 偶数
5: 奇数
6: 偶数
7: 奇数
8: 偶数
9: 奇数
10: 偶数
11: 奇数
12: 偶数
13: 奇数
14: 偶数
15: 奇数
16: 偶数
17: 奇数
18: 偶数
19: 奇数
20: 偶数
演習2-2#
以下の点数リストが与えられたとき,70点以上の点数を取った人は何人いるかを計算するプログラムを作成せよ.
点数リスト: [45, 78, 62, 89, 73, 55, 81, 68]
# 解答例
scores = [45, 78, 62, 89, 73, 55, 81, 68]
count = 0
for score in scores:
if score >= 70:
count += 1
print(count)
4
演習2-3#
以下の点数リストが与えられたとき,平均点を計算するプログラムを作成せよ.
点数リスト: [45, 78, 62, 89, 73, 55, 81, 68]
# 解答例
scores = [45, 78, 62, 89, 73, 55, 81, 68]
total_score = 0
for score in scores:
total_score += score
average = total_score / len(scores)
print(average)
68.875
演習2-4#
文字列 faehoieanfeaobasbaksfae
の中に含まれる a
の数を繰り返し処理を用いて計算せよ.
# 解答例
ss = 'faehoieanfeaobasbaksfae'
i = 0
for s in ss:
if s == 'a':
i = i + 1
print(i)
6
演習2-5#
以下の出力のように\({1,2,...,999}\)の数の中で\(123\)で割り切れる値をすべて出力せよ
出力
123
246
369
492
615
738
861
984
# 解答例
j = 123
for i in range(1,1000):
if i % j == 0:
print(i)
123
246
369
492
615
738
861
984
演習3:繰り返し処理と数列#
演習3-1#
1から10までの整数の総和(与えられた複数の数を全て足した和のこと)を求めるプログラムをfor
文を使用して作成せよ
出力
55
# 解答例
total = 0
for i in range(1, 11):
total = total + i
print(total)
55
演習3-2#
1から5までの整数の総乗(与えられた複数の数を全て掛けた積のこと)を求めるプログラムをfor
文を使用して作成せよ
出力
120
# 解答例
product = 1
for i in range(1, 6):
product = product * i
print(product)
120
演習3-3#
1からn
までの整数の総和と総乗を求めるプログラムをfor
文を使用して作成せよ.
ただし出力時は n
に6以上の任意の値を代入せよ.
出力 (n=5の場合)
総和: 15
総乗: 120
# 解答例
n = 5
sum_value = 0
prod_value = 1
for i in range(1, n + 1):
sum_value = sum_value + i
prod_value = prod_value * i
print("総和:", sum_value)
print("総乗:", prod_value)
総和: 15
総乗: 120
演習3-4#
以下の式は奇数列 \(1, 3, 5, 7, \dots\) の \(n\) 項までの総和を表す.
\(n=10\) としたとき,この和 \(S\) を繰り返し処理で求めよ.
結果は次のようになるはずである.
# 解答例
n = 10
total = 0
for k in range(1, n+1):
num = 2 * k - 1
total = total + num
print(total)
100
演習4:発展課題#
これ以降は発展的な演習課題となります. 解くことは必須ではありませんがぜひチャレンジしてみてください.
演習4-1#
繰り返し処理を使って以下のようなピラミッドの文字列を出力を得よ.
出力
1
222
33333
4444444
555555555
# 解答例
ss = '12345'
num_ss = len(ss)
i = 0
for s in ss:
side = ' ' * (num_ss-i)
print(side + s*i + s + s*i)
i = i + 1
1
222
33333
4444444
555555555
演習4-2#
条件分岐の発展課題のFizzBuzz問題を繰り返し処理で拡張する.
変数 number
の値を 1
から 20
まで繰り返し,number
が
3
で割り切れて5
で割り切れないときは「Fizz
」と出力5
で割り切れて3
で割り切れない時は「Buzz
」と出力両方で割り切れるときは「
FizzBuzz
」と出力両方で割り切れないときは,入力した数をそのまま出力
とされるような繰り返し処理を実装せよ.
出力例は以下である.
出力
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
# 解答例
for number in range(1,21):
if number % 3 == 0 and number % 5 != 0:
print('Fizz')
elif number % 5 == 0 and number % 3 != 0:
print('Buzz')
elif number % 5 == 0 and number % 3 == 0:
print('FizzBuzz')
else:
print(number)
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz