問題
入力された数値がゾロ目の場合は「ゾロ目です」、
ゾロ目以外の場合は「ゾロ目ではありません」と表示するプログラムを作成してください。
ただし、入力される数値は 1 から 100 までの整数とします。
入力はinput()
関数を使用すること。
解答
解説
今回の問題は「ゾロ目」かどうかの判定です。
初級ということで、入力を 1 から 100 までに限定しました。
これで難易度はグンと下がります。
ゾロ目の判定は色々な方法があると思いますが、解答例として2つの方法を掲載しています。
1つ目はin
演算子を使う方法。
2つ目は、ゾロ目なので、全桁が同じ数字かどうかをチェックする方法です。
順番に見ていきましょう。
in 演算子
in
演算子はA in B
と書くことで B に A が含まれる場合は True、含まれない場合はFalseを返す演算子です。
B には文字列、リスト、辞書などを指定することができます。
文字列
文字列の中に特定の文字が含まれるかどうかを確認したい時にin
演算子が使えます。
print('b' in 'abcde')
print('ab' in 'abcde')
print('dc' in 'abcde')
上記の実行結果
True
True
False
リスト
リストの各要素として、数値、文字列、リストなどがあるかどうかを確認したい時にもin
演算子が使えます。
sample_list = [
1,
'taklog',
[4, 5, 6]
]
print(1 in sample_list)
print('tak' in sample_list)
print('taklog' in sample_list)
print(4 in sample_list)
print([4, 5, 6] in sample_list)
上記の実行結果
True
False
True
False
True
今回の1つ目の解答はこのリストに対象のゾロ目を全て格納して、in
演算子を使っています。
辞書
辞書の中に文字列や数値があるかどうか確認したい時もin
演算子が使えます。
ただ、辞書自体を指定すると、辞書のキーが対象になります。
辞書の値を対象にしたい場合は、辞書のvalues()
メソッドを使いましょう。
sample_dict = {
'a':[1, 2, 3],
'abc':[2, 3, 4]
}
print('b' in sample_dict)
print('abc' in sample_dict)
print([1, 2, 3] in sample_dict.values())
上記の実行結果
False
True
False
True
全桁が同じ数字かどうかをチェックする
もう1つ紹介した方法は、ゾロ目の特性を利用した、全桁が同じ数字かどうかをチェックする方法です。
今回は入力が 1 〜 100 の整数という条件があるので、ゾロ目は全て2桁です。
そのため、
- 入力された値が2桁かどうか
- 1文字目と2文字目が同じかどうか
の2点をチェックして、ゾロ目かどうか判定しています。
Python では文字列はインデックスを指定することで各文字を参照できます。
sample_str = 'Taklog'
print(sample_str[0])
print(sample_str[1])
print(sample_str[2])
print(sample_str[3])
print(sample_str[4])
print(sample_str[5])
上記の実行結果
T
a
k
l
o
g
input()
関数を使って入力された値は文字列になります。
そのため、解答例2では入力された値の1文字目と2文字目が同じであることをチェックすることで、1桁目と2桁目が同じ数字であることをチェックしています。
Google Colaboratory
本記事に掲載しているコードは Google Colaboratory で動作を確認しています。
下記からアクセスして、ご自身のGoogleドライブにコピーしていただければ、すぐに実行できます。
環境構築の不要な Google が提供している Webサービスなので、Python を学習中の方にはオススメです。
おわりに
今回はゾロ目判定の問題をお届けしました。
解答例を2つ掲載しましたが、他にも方法はありますので、簡単に解けた方は違う方法も考えてみてください。
今回は初級編ということで、近いうちに上級編もお届けしたいと考えています。
本ブログでは、今後も具体的な問題・課題の解説記事を増やしていきたいと考えています。
解説して欲しい問題・課題がありましたら、ぜひ、お問い合わせフォームからご連絡ください。
以上です。
コメント