長期投資シミュレーションツール『Tousimu』をリリースしました!

【解答付き】paizaスキルチェックの日付セット「西暦の和暦変換(Cランク)」を解説!

プログラミング
スポンサーリンク

この記事では

プログラミング学習サービスpaizaラーニング

スキルチェックレベルアップ問題集をわかりやすく解説します!

プログラミング言語はpythonです。

今回はCランク相当の問題を解説します。

他のレベルアップ問題集の解答と解説も紹介しているので

ぜひご参考ください!

またpaizaの各ランクの攻略法は

こちらで詳しく紹介しているので、ぜひご参考ください!

スポンサーリンク

西暦の和暦変換 (paizaランク C 相当)の解答と解説

今回の問題は「西暦の和暦変換 (paizaランク C 相当)」です。

問題はこちらからご確認ください。

西暦の和暦変換 (paizaランク C 相当)

この問題を解くのに必要な知識は6つです。

必要な知識
  • 半角スペース区切りの入力を受け取る
  • 元号を判定
  • 文字列を結合
  • str型からint型に変換
  • 数値の大小を判定
  • 複数の変数を含んだ結果を出力

この記事では、上記の6つの中で

  • 元号を判定
  • 文字列を結合
  • 数値の大小を判定
  • 複数の変数を含んだ結果を出力

の4つについて、それぞれ詳しく解説します。

残りの

は、以下の記事をご参考ください!

元号を判定

まずは「元号を判定」です。

今回の問題では、与えられた日付から元号を判定し条件分岐を行います。

そのためまずは「元号を判定する条件」を考えなければなりません。

今回は入力された日付と元号が変わった日付を

8桁の数値に変換して、その大小で判定する方法で考えていきます。

日付を数値に変換
  • 1926年12月25日 → 19261225
  • 2019年5月1日  → 20190501

文字列を結合

次は「文字列を結合」です。

今回の問題では日付が年 月 日のように

半角スペース区切りで入力されます。

そのため以下の流れで8桁の数値に変換します。

8桁の数値に変換する流れ
# 各変数に入力を代入
year, month, day = input().split()

# 文字列として結合し、int型に変換
date = int(year + month + day)

文字列の結合については、こちらをご参考ください!

数値の大小を判定

次は「数値の大小を判定」です。

実は、上記の入力された日付の変換には1つ問題点があります。

それは「月や日が10より小さい時、桁数が8桁にならない」です。

''' 2000年1月1日の場合 '''

# "2000 1 1"と入力
year, month, day = input().split() 

# 200011となってしまう
date = int(year + month + day)

そのため入力された「月」と「日」が10より小さいかを判定し

if文を使って、10より小さい場合はそれぞれの前に0を結合します。

# 各変数に入力を代入
year, month, day = input().split()

# 0を付け足すための変数を定義
new_month = month
new_day = day

# monthが10より小さい時に前に0を結合
if int(month) < 10:
    new_month = "0" + month

# dayが10より小さい時に前に0を結合
if int(day) < 10:
    new_day = "0" + day

# 文字列として結合し、int型に変換
date = int(year + new_month + new_day)

ここで新しく変数を定義したのは

結果を出力する時に0の結合されていない「月」と「日」を使うためです。

ここまでで、入力された日付を8桁の数値に変換することが出来ました。

次に元号が変わった日付の数値と比較して元号を判定し

if elif else文で以下のように条件分岐を行います。

# 令和の場合
if date >= 20190501: 
   
# 平成の場合 
elif date >= 19890108:
    
# 昭和の場合
elif date >= 19261225:
    
# 大正の場合
elif date >= 19120730:
    
# 明治の場合
else:

複数の条件を課す場合には、課す順番に注意しましょう!

if文については、こちらをご参考ください!

複数の変数を含んだ結果を出力

最後は「複数の変数を含んだ結果を出力」です。

今回の問題では結果を(元号)年〜年〜日のように出力します。

そのため複数の変数を含めて、結果を出力する必要があります。

今回はformat関数を使った方法を使います。

if date >= 20190501: 
    # "令和年〜月〜日"と出力
    print("令和年{}月{}日".format(month, day))

elif date >= 19890108:
    # "平成年〜月〜日"と出力
    print("平成年{}月{}日".format(month, day))

elif date >= 19261225:
    # "昭和年〜月〜日"と出力
    print("昭和年{}月{}日".format(month, day))

elif date >= 19120730:
    # "大正年〜月〜日"と出力
    print("大正年{}月{}日".format(month, day))

else:
    # "明治年〜月〜日"と出力
    print("明治年{}月{}日".format(month, day))

format関数を使った出力については、こちらをご参考ください!

西暦の和暦変換 (paizaランク C 相当)の解答

まとめると「西暦の和暦変換 (paizaランク C 相当)」の解答は以下です。

# 各変数に入力を代入
year, month, day = input().split()

# 0を付け足すための変数を定義
new_month = month
new_day = day

# monthが10より小さい時に前に0を結合する
if int(month) < 10:
    new_month = "0" + month

# dayが10より小さい時に前に0を結合する
if int(day) < 10:
    new_day = "0" + day

# 文字列として結合し、int型に変換
date = int(year + new_month + new_day)

if date >= 20190501: 
    # "令和年〜月〜日"と出力
    print("令和年{}月{}日".format(month, day))

elif date >= 19890108:
    # "平成年〜月〜日"と出力
    print("平成年{}月{}日".format(month, day))

elif date >= 19261225:
    # "昭和年〜月〜日"と出力
    print("昭和年{}月{}日".format(month, day))

elif date >= 19120730:
    # "大正年〜月〜日"と出力
    print("大正年{}月{}日".format(month, day))

else:
    # "明治年〜月〜日"と出力
    print("明治年{}月{}日".format(month, day))

今回は「日付を8桁の数値に変換して判定する」という方法を解説しました。

もちろん他にもこの問題を解く方法は、たくさんあると思います。

ぜひ色々な方法で挑戦してみてください!

スポンサーリンク

まとめ

今回はpaizaのスキルチェックの練習問題の中で

  • 西暦の和暦変換 (paizaランク C 相当)

の解答と解説を紹介しました。

Cランクの問題からは必ずif文またはfor文が登場し

Dランクの問題に比べて、コードが複雑になります。

そのためコードを書き始める前に

頭の中で処理の流れをイメージをしてから書いていくのがおすすめです!

また他のレベルアップ問題集の問題についての解説も、ぜひご参考ください!

Pythonを学びたいと思っているけど

  • プログラミングスクールに数十万円も払えない・・・
  • 独学だとどうやって学んだらいいかわからない・・・
  • Pythonのインストールや環境構築がよくわからない・・・

といったお悩みを抱えている方はいませんか?

Pythonの学習はオンライン学習サービスのPyQがおすすめです!

PyQ

PyQの特徴は圧倒的なコストパフォーマンスで

たった月額3,040円で以下のPythonに関する内容が学び放題です!

PyQで学べる内容
  • プログラミングの基本
  • Python入門〜中級
  • ユニットテスト、設計
  • Webアプリ開発
  • Django(Pythonを使ったWebアプリ開発のフレームワーク)
  • スクレイピング
  • データ解析
  • 機械学習
  • 統計入門
  • アルゴリズム

またブラウザ上でコードを書いて学習できるため

面倒なPythonのインストールや環境構築なども一切不要です!

実際に私もプログラミングを始めた頃に利用していて

PyQを一通りやり終えた後は

  • Djangoを使ったポートフォリオの制作
  • スクレイピングによる作業の自動化
  • ディープラーニング

などのプログラムを自分で書けるようになり

paizaのスキルチェックでもSランクを所得しました!

PyQは登録後すぐに学習を開始できるので

Pythonの学習方法でお悩みの方は、今すぐPyQで学習をスタートしましょう!

しかし

  • 独学で挫折した経験がある・・・
  • 短期間でpythonを習得したい!
  • プロのエンジニアからpythonを学びたい!

という方は、PyQでの独学よりも

プログラミングスクールでの学習が最適かもしれません!

pythonが学べるおすすめのプログラミングスクールはこちら!

TechAcademy Pythonコース

おすすめスクールNo.1:TechAcademy Pythonコース

TechAcademyがおすすめな理由
  • 学習システムを1週間無料で体験できる!
  • 完全オンラインだから、忙しくても続けられる!
  • 各受講生に現役エンジニアのメンターがつく!

DIVE INTO CODE エキスパートAIコース

おすすめスクールNo.2:DIVE INTO CODE エキスパートAIコース

DIVE INTO CODEがおすすめな理由
  • 本気の人のためのスクール!事前テストで選考あり!
  • 無料説明会&体験セミナーあり!
  • 通学 or オンラインが選択できる!

CodeCamp Pythonデータサイエンスコース

おすすめスクールNo.3:CodeCamp Pythonデータサイエンスコース

DIVE INTO CODEがおすすめな理由
  • 無料体験レッスン受講で10,000円引き
  • 受講者数30,000人超えの圧倒的な実績!
  • レッスン満足度96.6%

ぜひ自分に合った学習方法でPythonを習得しましょう!

プログラミング paizaでSランク!
スポンサーリンク
Follow Me!
スポンサーリンク
まろぶろぐ
タイトルとURLをコピーしました