問題
1000以下の正の整数のうち、
- 3の倍数 もしくは 5の倍数 である
- 15の倍数ではない
上記を満たすものの総和を求め、表示させよ。
解答
解説
この問題のポイントは次の3点です。
- 倍数かどうかを判定する
range()
関数を使ったfor
文の書き方if
文の条件式の書き方
順番に見ていきましょう。
倍数かどうかを判定する
問題集No.1に奇数・偶数の判定がありました。
方法はこれと同じです。
偶数は2の倍数、奇数は2の倍数ではない数、ですね。
そのため、3の倍数 = 3で割った時の余りが0、5の倍数 = 5で割った時の余りが0、となります。
num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
for i in num_list:
if i % 3 == 0:
print(i,'は3の倍数です。')
if i % 5 == 0:
print(i,'は5の倍数です。')
上記の実行結果
3 は3の倍数です。
5 は5の倍数です。
6 は3の倍数です。
9 は3の倍数です。
10 は5の倍数です。
12 は3の倍数です。
15 は3の倍数です。
15 は5の倍数です。
range()
関数を使ったfor
文の書き方
Python の for
文では決まった回数ループさせたい場合などにrange()
関数を使用します。
for i in range(5):
print(i)
上記の実行結果
0
1
2
3
4
上記ではrange(5)
を指定しました。
この場合、ループは5回繰り返されますが、i
には0〜4が入ります。
i
に1〜5を入れたい場合は次のようにします。
for j in range(1,6):
print(j)
上記の実行結果
1
2
3
4
5
for
文に関しては下記記事も参考にしてください。
if
文の条件式の書き方
if
文の基本的な書き方については下記記事を参考にしてください。
ここでは、if
文の条件式に複数の条件を指定する場合の書き方をご紹介します。
2つの条件がある時の書き方を覚えてしまえば、あとはその組み合わせになります。
2つの条件のうち、どちらかを満たす場合の書き方
2つの条件がある時、どちらかを満たす場合の処理を書きたい場合(日本語だと「もしくは」という表現が使われる時)はor
演算子を使います。
a = 123
if a < 10 or a >100:
print('a は10より小さいか、100より大きい数です。')
else:
print('a は10以上、100以下の数です。')
上記の実行結果
a は10より小さいか、100より大きい数です。
2つの条件のうち、どちらも満たす場合の書き方
2つの条件がある時、どちらも満たす場合の処理を書きたい場合(日本語だと「かつ」という表現が使われる時)はand
演算子を使います。
b = 234
if b > 100 and b < 300:
print('b は100より大きい、かつ、300より小さい数です。')
else:
print('b は100以下、もしくは、300以上の数です。')
上記の実行結果
b は100より大きい、かつ、300より小さい数です。
Colab
解答例や解説のコードは Google Colaboratory で確認しています。
環境構築の不要な Google が提供している Webサービスなので、Python を学習中の方にはオススメです。
おわりに
今回の問題は LINE のオープンチャットに投稿されたものです。
今後も具体的な問題・課題の解説記事を増やしていきたいと思っています。
解説して欲しい問題・課題がありましたら、お問い合わせフォームからご連絡ください。
以上です。
コメント