第94回【Python】数字の文字列操作(時刻1)、数字の文字列操作(時刻2)
現在取り組んでいるのは、paiza ラーニング問題集「C ランクレベルアップメニュー」になります。
はじめに
猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。
Python をゼロから勉強してみよう、のコーナー 94 回目です。
ルナちゃんが甘えん坊すぎて困ります。カワイスギクライシスです。くっついて寝られると暑くてしょうがないですが、突き放すことはできません。
それでは、今日も頑張ってみようと思います。
数字の文字列操作(時刻1)
時刻を表す長さ 5 の文字列 S が “XX:XX” の形式で与えられます。入力された時刻を時と分に分け、時、分の順番で改行区切りで出力してください。
S
すべてのテストケースにおいて、以下の条件をみたします。
・S は “XX:XX” という形をしており、 “:" の左側は時を、右側は分を表します。時や分が一桁である場合、十の位は 0 で埋められます。また、 00:00 から 23:59 までの 24 時間表記を採用しています。
入力例
01:03
出力例
1
3
結構よくあるパターンな気がします。
Python
H,M = input().split(':')
print(int(H))
print(int(M))
VBA
S = Format(Cells(1, 1), "hh:mm")
Debug.Print Val(Left(S, 2))
Debug.Print Val(Right(S, 2))
数字の文字列操作(時刻2)
時刻を表す長さ 5 の文字列 S が “XX:XX” の形式で与えられます。与えられた時刻の 30 分後の時刻を同じ形式で出力してください。
S
すべてのテストケースにおいて、以下の条件をみたします。
・S が表す時刻は最も遅くて 23:29
入力例
12:31
出力例
13:01
とてもよくあるパターンな気がします。datetime モジュールを利用すれば簡単なんですが、模範解答はとても面倒なことをしていました。
Python
import datetime
S = input()
tdata = datetime.datetime.strptime(S,'%H:%M')
tdata_30min = tdata + datetime.timedelta(minutes=30)
print(f'{tdata_30min:%H:%M}')
Python(模範解答)
S = input()
h = int(S[:2])
m = int(S[3:])
if m + 30 >= 60:
h = str(h + 1)
m = str(m + 30 - 60)
else:
h = str(h)
m = str(m + 30)
if len(h) == 1:
h = "0" + h
if len(m) == 1:
m = "0" + m
print(h + ":" + m)
VBA
S = Format(Cells(1, 1), "hh:mm")
Debug.Print Format(DateAdd("n", 30, S), "hh:mm")
最後に
後の問題の方、このやり方はなかなかないだろう、と思ってしまった。しかし、思い返してみると、別の言語で似たようなことをしたことあるなぁ。なんでだったか・・・。
やっぱり、いろいろな方法を知って、引き出しを多く持っておいたほうがいいに決まっている。VBA で書くのは断念しましたが。面倒過ぎて・・・。
引き続き、よろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません