パソコン仕事5倍塾
35,000人を指導した東大卒・元日本IBM社内講師が直伝
MENU
伊久間博之さんの投稿
(投稿ID: 5502)
def get_first_month_day_of_zodiac_sign(month, zodiac_part_dict): """各星座の最終日を含む月から、その星座の最初の日を返す :return: {'month': 1, 'day': 20} といった形式の辞書 """ if month == 1: last_month = 12 elif month >= 12: last_month = month else: last_month = month - 1 for v in zodiac_part_dict.values(): if v['month'] == last_month: return {'month': last_month, 'day': v['day'] + 1, } raise ValueError('Invalid month')
def test_get_first_month_day_of_zodiac_sign_month_raise_invalid_0(): """ get_first_month_day_of_zodiac_sign に 1月未満を渡したときの異常動作を確認する """ zodiac_part_dict = get_zodiac_part_dict() with pytest.raises(ValueError): get_first_month_day_of_zodiac_sign(0, zodiac_part_dict) def test_get_first_month_day_of_zodiac_sign_month_raise_invalid_13(): """ get_first_month_day_of_zodiac_sign に 13月以上を渡したときの異常動作を確認する """ zodiac_part_dict = get_zodiac_part_dict() with pytest.raises(ValueError): get_first_month_day_of_zodiac_sign(13, zodiac_part_dict)
伊久間博之さんのコメント
(コメントID: 8250)
def get_first_month_day_of_zodiac_sign(month, zodiac_part_dict): """各星座の最終日を含む月から、その星座の最初の日を返す :return: {'month': 1, 'day': 20} といった形式の辞書 """ if month == 1: last_month = 12 elif month > 12: last_month = month else: last_month = month - 1 for v in zodiac_part_dict.values(): if v['month'] == last_month: return {'month': last_month, 'day': v['day'] + 1, } raise ValueError('Invalid month')
小川 慶一さんのコメント
(コメントID: 8259)
date(2020, month, day) # 不正な month, day の組み合わせだとここで例外が発生する
Captcha:
たった1ヶ月で人生が劇的に変わりました
佐藤信さん
役員クラスの方から高い評価を受けるようになりました。
佐賀県 - 岩本徹さん
今までまったく知らなかったショートカットキーを使いまくっています。
東京都 - 鷹觜慶さん
年齢60才間近、営業で外回りの時間が多い私でも退社時間が1-2時間程度早くなりました。
東京都 - 宗内隆明さん
受講前もすでにパソコン得意でしたが、そんな私でも受講して本当に良かったと思えた講座です。
東京都 - 佐伯とも子さん
ここまで包括的に仕事に役立つ深い学びを受けれた講座は初めてでした
東京都 - 飯田倫子さん
2025年04月18日 09:15
2025年04月09日 07:21
2025年04月06日 09:31
2025年04月05日 16:12
2025年04月01日 08:46
2025年04月18日 09:16
2025年04月13日 06:10
2025年04月12日 13:37
2025年04月10日 09:57
2022年02月24日 10:59
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
2022年02月02日 00:00
2022年02月02日 03:00
2022年02月02日 06:00
2022年02月02日 09:00
2022年02月02日 12:00
2025年04月15日 11:30
2025年04月08日 16:30
2025年04月07日 16:30
2025年04月04日 15:45
2025年03月27日 13:30
2025年02月04日 08:51
2025年02月03日 12:58
2024年11月27日 11:48
2024年11月25日 12:07
2024年11月17日 09:51
2025年03月26日 22:33
2025年03月26日 22:12
2025年03月24日 22:28
2025年03月19日 20:10
2025年03月18日 20:52
2025年04月16日 08:30
2025年03月18日 09:07
2025年03月18日 09:06
2025年03月15日 13:23
2025年02月26日 16:37
2025年04月02日 21:01
2025年04月02日 20:47
2025年04月02日 20:37
2025年04月01日 22:03
2025年04月01日 21:27
2025年04月16日 08:32
2025年03月18日 09:10
2025年03月18日 09:09
伊久間博之さんの投稿
(投稿ID: 5502)
以下のように修正してみました。
テストコードは以下のようにしてみました。
伊久間博之さんのコメント
(コメントID: 8250)
小川 慶一さんのコメント
(コメントID: 8259)
こういうのは、「どんな値が来る可能性があるか」という前提次第というところです。
全体としては大元の get_zodiac_sign_name 内の以下のコードで不正な値が投入された場合の処理を終えているので、この関数は当初の仕様でも十分です。
「1-12 までの整数値しかこない」等の設計の段階で決めた前提があるならば、 docstring に記述しておくのも良いです。