回答編集履歴
13
テキスト修正
test
CHANGED
@@ -54,7 +54,7 @@
|
|
54
54
|
|
55
55
|
|
56
56
|
|
57
|
-
|
57
|
+
時差`s` が小数を含んでも正しく計算されます。たとえば、`s = -2.5` とすると、
|
58
58
|
|
59
59
|
2時間半前の、`08:58` が出力されます。
|
60
60
|
|
12
テキスト修正
test
CHANGED
@@ -70,16 +70,6 @@
|
|
70
70
|
|
71
71
|
|
72
72
|
|
73
|
-
ただし、与えられる "HH:MM"形式の文字列を "HH" と "MM" とに分割して処理するので、
|
74
|
-
|
75
|
-
ご質問で求められている方法ではないかもしれませんし、与えられる時差`s`の値が整数値で
|
76
|
-
|
77
|
-
あることを前提にしています。(つまり与えられた時刻の分は変えないことを仮定しています。)
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
73
|
```python
|
84
74
|
|
85
75
|
import re
|
@@ -120,7 +110,15 @@
|
|
120
110
|
|
121
111
|
|
122
112
|
|
113
|
+
こちらのほうは、与えられる "HH:MM"形式の文字列を "HH" と "MM" とに分割して処理するので、
|
114
|
+
|
115
|
+
ご質問で求められている方法ではないかもしれませんし、与えられる時差`s`の値が整数値で
|
116
|
+
|
117
|
+
あることを前提にしています。(つまり与えられた時刻の分は変えないことを仮定しています。)
|
118
|
+
|
119
|
+
|
120
|
+
|
123
|
-
上記のコードの中で、
|
121
|
+
また、上記のコードの中で、
|
124
122
|
|
125
123
|
```python
|
126
124
|
|
11
テキスト修正
test
CHANGED
@@ -60,17 +60,21 @@
|
|
60
60
|
|
61
61
|
|
62
62
|
|
63
|
+
|
64
|
+
|
63
65
|
**(2) 正規表現を使う**
|
64
66
|
|
65
67
|
|
66
68
|
|
67
|
-
二番目の解法
|
69
|
+
二番目の解法として、あえて datetime を使わない方法を考えてみました。
|
68
70
|
|
69
|
-
|
71
|
+
|
70
72
|
|
71
|
-
|
73
|
+
ただし、与えられる "HH:MM"形式の文字列を "HH" と "MM" とに分割して処理するので、
|
72
74
|
|
75
|
+
ご質問で求められている方法ではないかもしれませんし、与えられる時差`s`の値が整数値で
|
76
|
+
|
73
|
-
あることを前提にしています。(つまり与えられた時刻の分は変
|
77
|
+
あることを前提にしています。(つまり与えられた時刻の分は変えないことを仮定しています。)
|
74
78
|
|
75
79
|
|
76
80
|
|
10
テキスト修正
test
CHANGED
@@ -66,11 +66,11 @@
|
|
66
66
|
|
67
67
|
二番目の解法は、datetime を使わない方法を考えてみました。
|
68
68
|
|
69
|
-
与えられる "HH:MM"形式の文字列を "HH" と "MM"
|
69
|
+
与えられる "HH:MM"形式の文字列を "HH" と "MM" とに分割して処理するので、ご質問で
|
70
70
|
|
71
|
-
いる方法ではないかもしれませんし、こちらは与えられる時差`s`の値が整数値で
|
71
|
+
求められている方法ではないかもしれませんし、こちらは与えられる時差`s`の値が整数値で
|
72
72
|
|
73
|
-
前提にしています。(つまり与えられた時刻の分は変わらないことを仮定しています。)
|
73
|
+
あることを前提にしています。(つまり与えられた時刻の分は変わらないことを仮定しています。)
|
74
74
|
|
75
75
|
|
76
76
|
|
9
テキスト修正
test
CHANGED
@@ -64,9 +64,13 @@
|
|
64
64
|
|
65
65
|
|
66
66
|
|
67
|
-
|
67
|
+
二番目の解法は、datetime を使わない方法を考えてみました。
|
68
68
|
|
69
|
+
与えられる "HH:MM"形式の文字列を "HH" と "MM" で分けるので、ご質問で求められて
|
70
|
+
|
71
|
+
いる方法ではないかもしれませんし、こちらは与えられる時差`s`の値が整数値であることを
|
72
|
+
|
69
|
-
(つまり与えられた時刻の分は変わらないことを仮定しています。)
|
73
|
+
前提にしています。(つまり与えられた時刻の分は変わらないことを仮定しています。)
|
70
74
|
|
71
75
|
|
72
76
|
|
8
テキスト修正
test
CHANGED
@@ -120,9 +120,9 @@
|
|
120
120
|
|
121
121
|
```
|
122
122
|
|
123
|
-
と、 24 の剰余を計算しているのは、与えられた時差`s`が、 たとえば`1000
|
123
|
+
と、 24 の剰余を計算しているのは、与えられた時差`s`が、 たとえば`1000` だったり、
|
124
124
|
|
125
|
-
または、`-1000
|
125
|
+
または、`-1000` だったりしても、正しい結果を得るための処理です。
|
126
126
|
|
127
127
|
|
128
128
|
|
7
テキスト修正
test
CHANGED
@@ -112,17 +112,7 @@
|
|
112
112
|
|
113
113
|
|
114
114
|
|
115
|
-
以上参考になれば幸いです。
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
---
|
120
|
-
|
121
|
-
補足
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
115
|
+
上記のコードの中で、
|
126
116
|
|
127
117
|
```python
|
128
118
|
|
@@ -133,3 +123,7 @@
|
|
133
123
|
と、 24 の剰余を計算しているのは、与えられた時差`s`が、 たとえば`10000` だったり、
|
134
124
|
|
135
125
|
または、`-10000` だったりしても、正しい結果を得るための処理です。
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
以上参考になれば幸いです。
|
6
テキスト修正
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
(1) datetime および timedelta を使う
|
9
|
+
**(1) datetime および timedelta を使う**
|
10
10
|
|
11
11
|
|
12
12
|
|
@@ -60,7 +60,7 @@
|
|
60
60
|
|
61
61
|
|
62
62
|
|
63
|
-
(2) 正規表現を使う
|
63
|
+
**(2) 正規表現を使う**
|
64
64
|
|
65
65
|
|
66
66
|
|
5
テキスト修正
test
CHANGED
@@ -132,4 +132,4 @@
|
|
132
132
|
|
133
133
|
と、 24 の剰余を計算しているのは、与えられた時差`s`が、 たとえば`10000` だったり、
|
134
134
|
|
135
|
-
または、`-10000` だったりしても、正しい
|
135
|
+
または、`-10000` だったりしても、正しい結果を得るための処理です。
|
4
テキスト修正
test
CHANGED
@@ -113,3 +113,23 @@
|
|
113
113
|
|
114
114
|
|
115
115
|
以上参考になれば幸いです。
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
---
|
120
|
+
|
121
|
+
補足
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
回答のコード(2) で、
|
126
|
+
|
127
|
+
```python
|
128
|
+
|
129
|
+
h = (int(m.group(1)) + s) % 24
|
130
|
+
|
131
|
+
```
|
132
|
+
|
133
|
+
と、 24 の剰余を計算しているのは、与えられた時差`s`が、 たとえば`10000` だったり、
|
134
|
+
|
135
|
+
または、`-10000` だったりしても、正しい答えになるようにするための処理です。
|
3
テキスト修正
test
CHANGED
@@ -92,7 +92,7 @@
|
|
92
92
|
|
93
93
|
# 正規表現で、与えられた時刻の時と分を取得
|
94
94
|
|
95
|
-
m = re.match(r"^([0-
|
95
|
+
m = re.match(r"^(2[0-3]|[01][0-9]):([0-5][0-9])$", t)
|
96
96
|
|
97
97
|
|
98
98
|
|
2
テキスト修正
test
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
# strptimeで与えられた時刻から datetime オブジェクトを作成
|
32
32
|
|
33
|
-
|
33
|
+
hhmm = datetime.strptime(t, '%H:%M')
|
34
34
|
|
35
35
|
|
36
36
|
|
@@ -40,15 +40,15 @@
|
|
40
40
|
|
41
41
|
|
42
42
|
|
43
|
-
#
|
43
|
+
# hhmm に delta を加える。
|
44
44
|
|
45
|
-
|
45
|
+
hhmm += delta
|
46
46
|
|
47
47
|
|
48
48
|
|
49
49
|
# 結果の出力(時分だけを表示)
|
50
50
|
|
51
|
-
print("{0:%H:%M}".format(
|
51
|
+
print("{0:%H:%M}".format(hhmm))
|
52
52
|
|
53
53
|
```
|
54
54
|
|
1
テキスト修正
test
CHANGED
@@ -98,17 +98,9 @@
|
|
98
98
|
|
99
99
|
if m:
|
100
100
|
|
101
|
-
# 与えられた時刻の時に時差を加え
|
101
|
+
# 与えられた時刻の時に時差を加え、 24の剰余を算出
|
102
102
|
|
103
|
-
h = int(m.group(1)) + s
|
103
|
+
h = (int(m.group(1)) + s) % 24
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
# 時差を加えた結果、0未満だったり、24以上の場合の対応
|
108
|
-
|
109
|
-
while h < 0 or 24 <= h:
|
110
|
-
|
111
|
-
h = 24 + h if h < 0 else h - 24
|
112
104
|
|
113
105
|
|
114
106
|
|