繰り返し処理(解答)#
演習1:for文による繰り返し処理#
演習1-1#
\({0,1,2,...,10}\) の値を要素として持つリスト l を定義して,以下の出力例となるように各要素を for 文を使って出力せよ.
出力
0
1
2
3
4
5
6
7
8
9
10
# 解答
l = [0,1,2,3,4,5,6,7,8,9,10]
for i in l:
print(i)
0
1
2
3
4
5
6
7
8
9
10
演習1-2#
以下の出力結果となるようにrange関数とfor文を用いて\({0,1,2,...,10}\)の値を出力する処理を作成せよ
出力
0
1
2
3
4
5
6
7
8
9
10
# 解答
for i in range(11):
print(i)
0
1
2
3
4
5
6
7
8
9
10
演習1-3#
以下の出力結果となるように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-4#
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-5#
文字列hiroshimaを作成し,以下の出力結果となるようにfor文を用いて繰り返し処理を作成せよ.
出力
h
i
r
o
s
h
i
m
a
# 解答例
ss = 'hiroshima'
for s in ss:
print(s)
h
i
r
o
s
h
i
m
a
演習1-6#
文字列hiroshimaを作成し,以下の出力結果となるような繰り返し処理を作成せよ.
出力
h-1
i-2
r-3
o-4
s-5
h-6
i-7
m-8
a-9
# 解答例
ss = 'hiroshima'
i = 1
for s in ss:
print(f'{s}-{i}')
i = i + 1
h-1
i-2
r-3
o-4
s-5
h-6
i-7
m-8
a-9
# 解答例
ss = 'hiroshima'
for i, s in enumerate(ss):
print(f'{s}-{i+1}')
h-1
i-2
r-3
o-4
s-5
h-6
i-7
m-8
a-9
演習1-7#
文字列hiroshimaを作成し,以下の出力結果となるような繰り返し処理を作成せよ.
出力
h
ii
rrr
oooo
sssss
hhhhhh
iiiiiii
mmmmmmmm
aaaaaaaaa
# 解答例
ss = 'hiroshima'
i = 1
for s in ss:
print(s*i)
i = i + 1
h
ii
rrr
oooo
sssss
hhhhhh
iiiiiii
mmmmmmmm
aaaaaaaaa
# 解答例
ss = 'hiroshima'
for i, s in enumerate(ss):
print(s*(i+1))
h
ii
rrr
oooo
sssss
hhhhhh
iiiiiii
mmmmmmmm
aaaaaaaaa
演習1-8#
文字列hiroshimaを作成し,文字列の長さを繰り返し処理を用いて求めよ.ただし,len関数を用いてはならない.
今回の hiroshima 例の場合,文字列の長さは 9 である.
# 解答例
ss = 'hiroshima'
i = 0
for s in ss:
i += 1
print(i)
9
演習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
演習2-6#
以下の出力となるような繰り返し処理を作成せよ.ただし,文字列.upper()で小文字から大文字へ変換できるとする.
出力
h
II
rrr
OOOO
sssss
HHHHHH
iiiiiii
MMMMMMMM
aaaaaaaaa
# サンプルコード
s = 'hiroshima'
print(s)
print(s.upper())
hiroshima
HIROSHIMA
# 解答例
ss = 'hiroshima'
i = 1
for s in ss:
if i % 2 == 0:
s_ = s*i
print(s_.upper())
else:
print(s*i)
i = i + 1
h
II
rrr
OOOO
sssss
HHHHHH
iiiiiii
MMMMMMMM
aaaaaaaaa
演習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
演習4:発展課題#
これ以降は発展的な演習課題となります. 解くことは必須ではありませんがぜひチャレンジしてみてください.
演習4-1#
繰り返し処理を使って以下の出力を得よ.
出力
H
III
RRRRR
OOOOOOO
SSSSSSSSS
HHHHHHHHHHH
IIIIIIIIIIIII
MMMMMMMMMMMMMMM
AAAAAAAAAAAAAAAAA
# 解答例
ss = 'HIROSHIMA'
num_ss = len(ss)
i = 0
for s in ss:
side = ' ' * (num_ss-i)
print(side + s*i + s + s*i)
i = i + 1
H
III
RRRRR
OOOOOOO
SSSSSSSSS
HHHHHHHHHHH
IIIIIIIIIIIII
MMMMMMMMMMMMMMM
AAAAAAAAAAAAAAAAA
演習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