回答編集履歴

13

テキスト修正

2018/02/12 03:56

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -54,7 +54,7 @@
54
54
 
55
55
 
56
56
 
57
- 上記だと、`s` が小数を含んでも正しく計算されます。たとえば、`s = -2.5` とすると、
57
+ 時差`s` が小数を含んでも正しく計算されます。たとえば、`s = -2.5` とすると、
58
58
 
59
59
  2時間半前の、`08:58` が出力されます。
60
60
 

12

テキスト修正

2018/02/12 03:56

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/02/12 03:05

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -60,17 +60,21 @@
60
60
 
61
61
    
62
62
 
63
+  
64
+
63
65
  **(2) 正規表現を使う**
64
66
 
65
67
 
66
68
 
67
- 二番目の解法、datetime を使わない方法を考えてみました。
69
+ 二番目の解法としてあえて datetime を使わない方法を考えてみました。
68
70
 
69
- 与えられる "HH:MM"形式の文字列を "HH" と "MM" とに分割して処理するので、ご質問で
71
+  
70
72
 
71
- 求められている方法ではないかもれませんしこちらは与えられる時差`s`値が整数値
73
+ ただし、与えられる "HH:MM"形式文字列を "HH" と "MM" とに分割して処理するの
72
74
 
75
+ ご質問で求められている方法ではないかもしれませんし、与えられる時差`s`の値が整数値で
76
+
73
- あることを前提にしています。(つまり与えられた時刻の分は変わらないことを仮定しています。)
77
+ あることを前提にしています。(つまり与えられた時刻の分は変ないことを仮定しています。)
74
78
 
75
79
 
76
80
 

10

テキスト修正

2018/02/12 03:02

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/02/11 20:14

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -64,9 +64,13 @@
64
64
 
65
65
 
66
66
 
67
- ただしこちらは与られる時差`s`の値が整数値であることを前提にし
67
+ 二番目の解法はdatetime を使わない方法を考えてした
68
68
 
69
+ 与えられる "HH:MM"形式の文字列を "HH" と "MM" で分けるので、ご質問で求められて
70
+
71
+ いる方法ではないかもしれませんし、こちらは与えられる時差`s`の値が整数値であることを
72
+
69
- (つまり与えられた時刻の分は変わらないことを仮定しています。)
73
+ 前提にしています。(つまり与えられた時刻の分は変わらないことを仮定しています。)
70
74
 
71
75
 
72
76
 

8

テキスト修正

2018/02/11 20:13

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -120,9 +120,9 @@
120
120
 
121
121
  ```
122
122
 
123
- と、 24 の剰余を計算しているのは、与えられた時差`s`が、 たとえば`10000` だったり、
123
+ と、 24 の剰余を計算しているのは、与えられた時差`s`が、 たとえば`1000` だったり、
124
124
 
125
- または、`-10000` だったりしても、正しい結果を得るための処理です。
125
+ または、`-1000` だったりしても、正しい結果を得るための処理です。
126
126
 
127
127
 
128
128
 

7

テキスト修正

2018/02/11 09:47

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -112,17 +112,7 @@
112
112
 
113
113
 
114
114
 
115
- 以上参考になれば幸いです。
116
-
117
-
118
-
119
- ---
120
-
121
- 補足
122
-
123
-
124
-
125
- 回答のコード(2) で、
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

テキスト修正

2018/02/10 23:32

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/02/10 23:30

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -132,4 +132,4 @@
132
132
 
133
133
  と、 24 の剰余を計算しているのは、与えられた時差`s`が、 たとえば`10000` だったり、
134
134
 
135
- または、`-10000` だったりしても、正しい答えになようにするための処理です。
135
+ または、`-10000` だったりしても、正しい結果を得るための処理です。

4

テキスト修正

2018/02/10 23:19

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/02/10 23:13

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -92,7 +92,7 @@
92
92
 
93
93
  # 正規表現で、与えられた時刻の時と分を取得
94
94
 
95
- m = re.match(r"^([0-2][0-9]):([0-5][0-9])$", t)
95
+ m = re.match(r"^(2[0-3]|[01][0-9]):([0-5][0-9])$", t)
96
96
 
97
97
 
98
98
 

2

テキスト修正

2018/02/10 17:44

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -30,7 +30,7 @@
30
30
 
31
31
  # strptimeで与えられた時刻から datetime オブジェクトを作成
32
32
 
33
- date = datetime.strptime(t, '%H:%M')
33
+ hhmm = datetime.strptime(t, '%H:%M')
34
34
 
35
35
 
36
36
 
@@ -40,15 +40,15 @@
40
40
 
41
41
 
42
42
 
43
- # date に delta を加える。
43
+ # hhmm に delta を加える。
44
44
 
45
- date += delta
45
+ hhmm += delta
46
46
 
47
47
 
48
48
 
49
49
  # 結果の出力(時分だけを表示)
50
50
 
51
- print("{0:%H:%M}".format(date))
51
+ print("{0:%H:%M}".format(hhmm))
52
52
 
53
53
  ```
54
54
 

1

テキスト修正

2018/02/10 17:34

投稿

jun68ykt
jun68ykt

スコア9058

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