回答編集履歴
5
個数の和を追加
test
CHANGED
@@ -76,6 +76,8 @@
|
|
76
76
|
|
77
77
|
sum=0
|
78
78
|
|
79
|
+
sum_d = 0
|
80
|
+
|
79
81
|
for i in tiedosto.readlines():
|
80
82
|
|
81
83
|
# 改行コード除去
|
@@ -110,6 +112,10 @@
|
|
110
112
|
|
111
113
|
print(i,"の数字の部分は",len(strint), end="個あって、")
|
112
114
|
|
115
|
+
|
116
|
+
|
117
|
+
sum_d += len(strint)
|
118
|
+
|
113
119
|
|
114
120
|
|
115
121
|
# 小数点以下の桁数がAX_DIGIT_AFTER_POINT以上の場合, 余分な分を文字列から除去する
|
@@ -142,11 +148,15 @@
|
|
142
148
|
|
143
149
|
|
144
150
|
|
145
|
-
return strint_to_float(str(sum), MAX_DIGIT_AFTER_POINT)
|
151
|
+
return strint_to_float(str(sum), MAX_DIGIT_AFTER_POINT), sum_d
|
146
152
|
|
147
153
|
if __name__ == "__main__":
|
148
154
|
|
149
|
-
|
155
|
+
_sum, sum_d = desimaaliluku()
|
156
|
+
|
157
|
+
print("総和は",_sum, "数字の部分の個数の和は", sum_d)
|
158
|
+
|
159
|
+
|
150
160
|
|
151
161
|
```
|
152
162
|
|
@@ -178,7 +188,7 @@
|
|
178
188
|
|
179
189
|
1.23456789 の数字の部分は 9個あって、切り捨てると 1.23
|
180
190
|
|
181
|
-
総和は 1863016.47
|
191
|
+
総和は 1863016.47 数字の部分の個数の和は 113
|
182
192
|
|
183
193
|
```
|
184
194
|
|
@@ -254,42 +264,42 @@
|
|
254
264
|
|
255
265
|
|
256
266
|
|
257
|
-
3.14 の数字の部分は 3個あって、切り捨てると 3.14
|
267
|
+
3.14 の数字の部分は 3個あって、切り捨てると 3.14
|
258
|
-
|
268
|
+
|
259
|
-
2.692038 の数字の部分は 7個あって、切り捨てると 2.69
|
269
|
+
2.692038 の数字の部分は 7個あって、切り捨てると 2.69
|
260
|
-
|
270
|
+
|
261
|
-
0.009 の数字の部分は 4個あって、切り捨てると 0.00
|
271
|
+
0.009 の数字の部分は 4個あって、切り捨てると 0.00
|
262
|
-
|
272
|
+
|
263
|
-
69.96 の数字の部分は 4個あって、切り捨てると 69.96
|
273
|
+
69.96 の数字の部分は 4個あって、切り捨てると 69.96
|
264
|
-
|
274
|
+
|
265
|
-
1.337 の数字の部分は 4個あって、切り捨てると 1.33
|
275
|
+
1.337 の数字の部分は 4個あって、切り捨てると 1.33
|
266
|
-
|
276
|
+
|
267
|
-
715517.01 の数字の部分は 8個あって、切り捨てると 715517.01
|
277
|
+
715517.01 の数字の部分は 8個あって、切り捨てると 715517.01
|
268
|
-
|
278
|
+
|
269
|
-
888888.888888888888 の数字の部分は 18個あって、切り捨てると 888888.88
|
279
|
+
888888.888888888888 の数字の部分は 18個あって、切り捨てると 888888.88
|
270
|
-
|
280
|
+
|
271
|
-
666.66666 の数字の部分は 8個あって、切り捨てると 666.66
|
281
|
+
666.66666 の数字の部分は 8個あって、切り捨てると 666.66
|
272
|
-
|
282
|
+
|
273
|
-
234242.2342323670923842042890342803 の数字の部分は 34個あって、切り捨てると 234242.23
|
283
|
+
234242.2342323670923842042890342803 の数字の部分は 34個あって、切り捨てると 234242.23
|
274
|
-
|
284
|
+
|
275
|
-
23623.346346347 の数字の部分は 14個あって、切り捨てると 23623.34
|
285
|
+
23623.346346347 の数字の部分は 14個あって、切り捨てると 23623.34
|
276
|
-
|
286
|
+
|
277
|
-
1.23456789 の数字の部分は 9個あって、切り捨てると 1.23
|
287
|
+
1.23456789 の数字の部分は 9個あって、切り捨てると 1.23
|
278
|
-
|
288
|
+
|
279
|
-
1. の数字の部分は 1個あって、切り捨てると 1.00
|
289
|
+
1. の数字の部分は 1個あって、切り捨てると 1.00
|
280
|
-
|
290
|
+
|
281
|
-
100005. の数字の部分は 6個あって、切り捨てると 100005.00
|
291
|
+
100005. の数字の部分は 6個あって、切り捨てると 100005.00
|
282
|
-
|
292
|
+
|
283
|
-
1. の数字の部分は 1個あって、切り捨てると 1.00
|
293
|
+
1. の数字の部分は 1個あって、切り捨てると 1.00
|
284
|
-
|
294
|
+
|
285
|
-
0000000. の数字の部分は 7個あって、切り捨てると 0000000.00
|
295
|
+
0000000. の数字の部分は 7個あって、切り捨てると 0000000.00
|
286
|
-
|
296
|
+
|
287
|
-
555533.100059958989130 の数字の部分は 21個あって、切り捨てると 555533.10
|
297
|
+
555533.100059958989130 の数字の部分は 21個あって、切り捨てると 555533.10
|
288
|
-
|
298
|
+
|
289
|
-
55555555555555. の数字の部分は 14個あって、切り捨てると 55555555555555.00
|
299
|
+
55555555555555. の数字の部分は 14個あって、切り捨てると 55555555555555.00
|
290
|
-
|
300
|
+
|
291
|
-
.999999 の数字の部分は 6個あって、切り捨てると 0.99
|
301
|
+
.999999 の数字の部分は 6個あって、切り捨てると 0.99
|
292
|
-
|
302
|
+
|
293
|
-
総和は 55555558074112.61
|
303
|
+
総和は 55555558074112.56 数字の部分の個数の和は 169
|
294
304
|
|
295
305
|
```
|
4
結果追加
test
CHANGED
@@ -209,3 +209,87 @@
|
|
209
209
|
1.23
|
210
210
|
|
211
211
|
```
|
212
|
+
|
213
|
+
10桁まで取り、整数も入れた場合
|
214
|
+
|
215
|
+
```txt
|
216
|
+
|
217
|
+
入力した値
|
218
|
+
|
219
|
+
3.14
|
220
|
+
|
221
|
+
2.692038
|
222
|
+
|
223
|
+
0.009
|
224
|
+
|
225
|
+
69.96
|
226
|
+
|
227
|
+
1.337
|
228
|
+
|
229
|
+
715517.01
|
230
|
+
|
231
|
+
888888.888888888888
|
232
|
+
|
233
|
+
666.66666
|
234
|
+
|
235
|
+
234242.2342323670923842042890342803
|
236
|
+
|
237
|
+
23623.346346347
|
238
|
+
|
239
|
+
1.23456789
|
240
|
+
|
241
|
+
1
|
242
|
+
|
243
|
+
100005
|
244
|
+
|
245
|
+
1.
|
246
|
+
|
247
|
+
0000000
|
248
|
+
|
249
|
+
555533.100059958989130
|
250
|
+
|
251
|
+
55555555555555
|
252
|
+
|
253
|
+
.999999
|
254
|
+
|
255
|
+
|
256
|
+
|
257
|
+
3.14 の数字の部分は 3個あって、切り捨てると 3.1400000000
|
258
|
+
|
259
|
+
2.692038 の数字の部分は 7個あって、切り捨てると 2.6920380000
|
260
|
+
|
261
|
+
0.009 の数字の部分は 4個あって、切り捨てると 0.0090000000
|
262
|
+
|
263
|
+
69.96 の数字の部分は 4個あって、切り捨てると 69.9600000000
|
264
|
+
|
265
|
+
1.337 の数字の部分は 4個あって、切り捨てると 1.3370000000
|
266
|
+
|
267
|
+
715517.01 の数字の部分は 8個あって、切り捨てると 715517.0100000000
|
268
|
+
|
269
|
+
888888.888888888888 の数字の部分は 18個あって、切り捨てると 888888.8888888888
|
270
|
+
|
271
|
+
666.66666 の数字の部分は 8個あって、切り捨てると 666.6666600000
|
272
|
+
|
273
|
+
234242.2342323670923842042890342803 の数字の部分は 34個あって、切り捨てると 234242.2342323670
|
274
|
+
|
275
|
+
23623.346346347 の数字の部分は 14個あって、切り捨てると 23623.3463463470
|
276
|
+
|
277
|
+
1.23456789 の数字の部分は 9個あって、切り捨てると 1.2345678900
|
278
|
+
|
279
|
+
1. の数字の部分は 1個あって、切り捨てると 1.0000000000
|
280
|
+
|
281
|
+
100005. の数字の部分は 6個あって、切り捨てると 100005.0000000000
|
282
|
+
|
283
|
+
1. の数字の部分は 1個あって、切り捨てると 1.0000000000
|
284
|
+
|
285
|
+
0000000. の数字の部分は 7個あって、切り捨てると 0000000.0000000000
|
286
|
+
|
287
|
+
555533.100059958989130 の数字の部分は 21個あって、切り捨てると 555533.1000599589
|
288
|
+
|
289
|
+
55555555555555. の数字の部分は 14個あって、切り捨てると 55555555555555.0000000000
|
290
|
+
|
291
|
+
.999999 の数字の部分は 6個あって、切り捨てると 0.9999990000
|
292
|
+
|
293
|
+
総和は 55555558074112.6187924517
|
294
|
+
|
295
|
+
```
|
3
main追加
test
CHANGED
@@ -66,7 +66,7 @@
|
|
66
66
|
|
67
67
|
MAX_DIGIT_AFTER_POINT = 2
|
68
68
|
|
69
|
-
|
69
|
+
|
70
70
|
|
71
71
|
# MAX_DIGIT_AFTER_POINTが0以上か確認
|
72
72
|
|
@@ -82,13 +82,13 @@
|
|
82
82
|
|
83
83
|
i = i.strip()
|
84
84
|
|
85
|
-
|
85
|
+
|
86
86
|
|
87
87
|
# iに不正な値が入力された場合, 強制終了
|
88
88
|
|
89
89
|
assert(is_float(i))
|
90
90
|
|
91
|
-
|
91
|
+
|
92
92
|
|
93
93
|
# .が見つからなかった場合(整数), .を付加し、以降では小数として扱う
|
94
94
|
|
@@ -96,13 +96,13 @@
|
|
96
96
|
|
97
97
|
i+="."
|
98
98
|
|
99
|
-
|
99
|
+
|
100
100
|
|
101
101
|
# 小数点以下の桁数を計算
|
102
102
|
|
103
103
|
digit_after_point = len(i)-1-i.find(".")
|
104
104
|
|
105
|
-
|
105
|
+
|
106
106
|
|
107
107
|
# コンマを除去し, 文字列型に整数を格納する
|
108
108
|
|
@@ -110,7 +110,7 @@
|
|
110
110
|
|
111
111
|
print(i,"の数字の部分は",len(strint), end="個あって、")
|
112
112
|
|
113
|
-
|
113
|
+
|
114
114
|
|
115
115
|
# 小数点以下の桁数がAX_DIGIT_AFTER_POINT以上の場合, 余分な分を文字列から除去する
|
116
116
|
|
@@ -118,7 +118,7 @@
|
|
118
118
|
|
119
119
|
strint = strint[:-(digit_after_point-MAX_DIGIT_AFTER_POINT)]
|
120
120
|
|
121
|
-
|
121
|
+
|
122
122
|
|
123
123
|
# 小数点以下の桁数がMAX_DIGIT_AFTER_POINT未満の場合, 足りない桁数分0を末尾に入れる
|
124
124
|
|
@@ -126,13 +126,13 @@
|
|
126
126
|
|
127
127
|
strint += "0"*(MAX_DIGIT_AFTER_POINT-digit_after_point)
|
128
128
|
|
129
|
-
|
129
|
+
|
130
130
|
|
131
131
|
# 切り捨てた結果を表示
|
132
132
|
|
133
133
|
print("切り捨てると",strint_to_float(strint, MAX_DIGIT_AFTER_POINT))
|
134
134
|
|
135
|
-
|
135
|
+
|
136
136
|
|
137
137
|
# ファイルに書き込み
|
138
138
|
|
@@ -140,10 +140,14 @@
|
|
140
140
|
|
141
141
|
sum += int(strint)
|
142
142
|
|
143
|
-
|
143
|
+
|
144
144
|
|
145
145
|
return strint_to_float(str(sum), MAX_DIGIT_AFTER_POINT)
|
146
146
|
|
147
|
+
if __name__ == "__main__":
|
148
|
+
|
149
|
+
print("総和は",desimaaliluku())
|
150
|
+
|
147
151
|
```
|
148
152
|
|
149
153
|
|
@@ -174,7 +178,7 @@
|
|
174
178
|
|
175
179
|
1.23456789 の数字の部分は 9個あって、切り捨てると 1.23
|
176
180
|
|
177
|
-
|
181
|
+
総和は 1863016.47
|
178
182
|
|
179
183
|
```
|
180
184
|
|
2
説明追記2
test
CHANGED
@@ -2,12 +2,18 @@
|
|
2
2
|
|
3
3
|
こちらでもデバッグしましたが、入力された値によっては間違えた結果が出るかもしれないので、確認してください。
|
4
4
|
|
5
|
-
|
5
|
+
|
6
6
|
|
7
7
|
質問のテストケースは大丈夫そうです。
|
8
8
|
|
9
9
|
誤差を防ぐため、小数ではなく整数で足し算を行うようにしました。
|
10
10
|
|
11
|
+
|
12
|
+
|
13
|
+
desimaalilukuの返り値は文字列型なので, 小数で扱いたい場合はfloatに変換してください。
|
14
|
+
|
15
|
+
指数表示には対応できていないです。(ちょっといじればできそう)
|
16
|
+
|
11
17
|
間違いがあればご指摘いただければ幸いです。
|
12
18
|
|
13
19
|
|
@@ -136,7 +142,7 @@
|
|
136
142
|
|
137
143
|
|
138
144
|
|
139
|
-
return
|
145
|
+
return strint_to_float(str(sum), MAX_DIGIT_AFTER_POINT)
|
140
146
|
|
141
147
|
```
|
142
148
|
|
@@ -168,7 +174,7 @@
|
|
168
174
|
|
169
175
|
1.23456789 の数字の部分は 9個あって、切り捨てると 1.23
|
170
176
|
|
171
|
-
1863016.47
|
177
|
+
'1863016.47'
|
172
178
|
|
173
179
|
```
|
174
180
|
|
1
説明追記
test
CHANGED
@@ -2,8 +2,14 @@
|
|
2
2
|
|
3
3
|
こちらでもデバッグしましたが、入力された値によっては間違えた結果が出るかもしれないので、確認してください。
|
4
4
|
|
5
|
+
指数表示には対応できていないです。
|
6
|
+
|
5
7
|
質問のテストケースは大丈夫そうです。
|
6
8
|
|
9
|
+
誤差を防ぐため、小数ではなく整数で足し算を行うようにしました。
|
10
|
+
|
11
|
+
間違いがあればご指摘いただければ幸いです。
|
12
|
+
|
7
13
|
|
8
14
|
|
9
15
|
```python
|