Python問題集を解いてみよう!!

【Python問題集】No.11 大の月・小の月

当ページのリンクには広告が含まれています。
Python問題集No.11
目次

問題

月の数字monthが入力されたとき、month月の日数が31日であれば、「○月はlong」と表示し、30日以下であれば「○月はshort」と表示するプログラムを書いてください。

ただし、月の数字は1以上12以下の整数であり、それ以外の整数が入力されたときは「○月はinvalid」と表示すること。整数とならない入力は与えないこととする。

なお、入出力の部分は提示したものを使用し、それを変更してはならない。

入出力の部分のコード

month = input('月: ')
### BEGIN ###

### END ###
print(f'{month}月は{message}')
おすすめのレンタルサーバー

解答

解答を見る前に、一度ご自身で考え、コードを書いてみることをオススメします。

おすすめのPython参考書
Pythonを勉強するならUdemyがおすすめ

Pythonを勉強するなら Udemy がおすすめです。

書籍よりも動画の方が情報量が多く、初心者の方でも理解しやすいですし、疑問に思ったことは講師に質問できるので、私は Python の勉強方として Udemy をオススメしています。

特に、酒井 潤さんの「現役シリコンバレーエンジニアが教えるPython入門」というコースがオススメです。

解説

解答例を2つ挙げましたが、解説ポイントはそれぞれ1つずつで、

  • in演算子
  • Calendar モジュール

の2点です。

in 演算子

解答例1では if 文の条件式に in 演算子を使用しています。

今回の問題は1月〜12月の各月の日数が31日か、30日以下かを判定するものになっています。

それぞれに該当する月をリストに格納し、入力された月がリストに含まれるかどうかを in 演算子を使用して判定するようにしています。

値 in リストという形式でリストの中に値が含まれているかどうかを判定することができます。

含まれていれば True、含まれていなければFalseが返ってきます。

sample_list = [1, 3, 5, 7, 9]

print(5 in sample_list)
# True

print(4 in sample_list)
# False

inの前にnotを付けることで、含まれていたらFalse、含まれていなかったらTrueとすることもできます。

sample_list = [1, 3, 5, 7, 9]

print(5 not in sample_list)
# False

print(4 not in sample_list)
# True

Calendar モジュール

解答例2は Calendar モジュールを使用しています。

Calendar モジュールは標準ライブラリの1つなので、pip 等によるインストールは不要です。

今回は Calendar モジュールのmonthrange()関数を使用しています。

monthrange()関数は引数に年(西暦)、月を指定し、その月の1日の曜日と、その月の日数をタプル形式で返します。

import calendar

print(calendar.monthrange(2022, 6))
# (2, 30)

上記のように2022年6月を指定すると、(2, 30)と返ってきます。

曜日は 月曜日が 0、火曜日が 1、 ・・・、日曜日が という形式になっていて、2022年6月1日は水曜日なので、1つ目の要素は「2」になっています。

そして、6月は30日までなので2つ目の要素は「30」になっています。

解答例2ではmonthrange()関数の返り値の2つ目の要素を利用しています。

monthrange()関数以外にも、Calendar モジュールは色々な関数やクラスを持っているので、公式ドキュメントなどを参照してみてください。

Google Colaboratory

本記事に掲載しているコードは Google Colaboratory で動作を確認しています。

下記からアクセスして、ご自身のGoogleドライブにコピーしていただければ、すぐに実行できます。

環境構築の不要な Google が提供している Webサービスなので、Python を学習中の方にはオススメです。

おわりに

本ブログでは、今後も具体的な問題・課題の解説記事を増やしていきたいと考えています。

解説して欲しい問題・課題がありましたら、ぜひ、お問い合わせフォームからご連絡ください。

以上です。

スポンサーリンク

Python問題集No.11

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次