回答編集履歴

3

眠くてわけわからない事書いてたので一部消しました

2019/04/12 15:38

投稿

kou0179
kou0179

スコア304

test CHANGED
@@ -192,14 +192,6 @@
192
192
 
193
193
 
194
194
 
195
- 例えば、
196
-
197
- ``current_row``に ``Hello! My name is kou0179``という文字列(str,文字列型)、
198
-
199
- ``current_row_word_len``に``5``という整数(int,整数型)が入っていたとします。
200
-
201
-
202
-
203
195
  まず、
204
196
 
205
197
  ```python

2

追加質問回答

2019/04/12 15:38

投稿

kou0179
kou0179

スコア304

test CHANGED
@@ -159,3 +159,149 @@
159
159
  - 指定された行から100行、単語数のカウント を行先頭に追記したファイルを「count_元ファイル名」で保存します。
160
160
 
161
161
  - 指定された行から、元ファイルの最後行が100行未満の場合は、最後行まで上述の処理を行います。
162
+
163
+
164
+
165
+ ## 追加質問回答
166
+
167
+
168
+
169
+ ##### 追加質問①
170
+
171
+
172
+
173
+ > 一つ目は単語の数の表示なのですが、
174
+
175
+ > I am a Japanese. (4)
176
+
177
+ > このように表示するにはどうすればいいのでしょうか?
178
+
179
+
180
+
181
+ 回答欄ソースコード、コメント,空行を除く、下から4行目あたりに
182
+
183
+
184
+
185
+ `` current_row = str(current_row_word_len) + " words | " + current_row ``
186
+
187
+
188
+
189
+ というコードがあるのは分かりますか?
190
+
191
+ この部分で、``current_row``には最初、元のテキストのある一行がそのまま入ってますが、これに文字列結合でただ単語数を追加してるだけです!
192
+
193
+
194
+
195
+ 例えば、
196
+
197
+ ``current_row``に ``Hello! My name is kou0179``という文字列(str,文字列型)、
198
+
199
+ ``current_row_word_len``に``5``という整数(int,整数型)が入っていたとします。
200
+
201
+
202
+
203
+ まず、
204
+
205
+ ```python
206
+
207
+ current_row = str(current_row_word_len) + " words | " + current_row
208
+
209
+ ```
210
+
211
+ この行は、``current_row``へ「何か」を代入する行というのはお分かりいただけると思います。
212
+
213
+
214
+
215
+ そして、その「何か」、すなわち、
216
+
217
+ `` str(current_row_word_len) + " words | " + current_row ``
218
+
219
+ は何をしているかというと、
220
+
221
+ 次に以下3つを結合しています。
222
+
223
+
224
+
225
+ - ``str(current_row_word_len)`` current_row_word_lenを文字列型へ変換したもの
226
+
227
+ - `` words | `` 単純な文字列
228
+
229
+ - ``current_row`` 文字列型変数(現在処理中の元ファイルの行の文字列)
230
+
231
+
232
+
233
+ それら結合した物を、``current_row``へぶち込みなおす処理をしてます。
234
+
235
+
236
+
237
+ なので、``I am a Japanese. (4)``という表示にしたければ
238
+
239
+
240
+
241
+ ```python
242
+
243
+ current_row = current_row + " (" + str(current_row_word_len) + ")"
244
+
245
+ ```
246
+
247
+
248
+
249
+ で、いけそうですが、無理です。(私はこれでいけると思った・・・)
250
+
251
+ なぜならば、``current_row``の一番最後の文字に改行コードが入ってしまっています。
252
+
253
+
254
+
255
+ よって、以下のようにcurrent_row最後の改行を消して、さらに改行コードを連結すればいけます。
256
+
257
+
258
+
259
+ ```python
260
+
261
+ current_row = current_row.rstrip('\n') + " (" + str(current_row_word_len) + ")\n"
262
+
263
+ ```
264
+
265
+ ポイントとしては
266
+
267
+ - ``current_row.rstrip('\n')``で改行コードを消してる
268
+
269
+ - ``")\n"``で最後にカッコを閉じるだけでなく改行を入れてあげる
270
+
271
+ です。
272
+
273
+
274
+
275
+ ##### 追加質問②
276
+
277
+
278
+
279
+ > 二つ目は
280
+
281
+ > ```python
282
+
283
+ > try:
284
+
285
+ > # 指定された行にアクセスしてみる
286
+
287
+ > _ = file_rows[start_row]
288
+
289
+ > ```
290
+
291
+ > の初めの_の部分はどういうことを表しているのでしょうか?
292
+
293
+
294
+
295
+ これは特にPythonでは意味は無いです。紛らわしくてごめんなさい。
296
+
297
+ 一部のプログラミング言語では、ブランク識別子等と呼ばれ、要は捨てるための変数と考えて頂けると分かりやすいです。
298
+
299
+ ただ、Pythonにはその概念が無いのでこのようにして使いました。
300
+
301
+ もっとスマートなやり方あれば教えてください笑
302
+
303
+
304
+
305
+ 今回の場合、別に今すぐには``file_rows[start_row]``に対して用事は無いけど、
306
+
307
+ もし存在しなかったら困るから念のため``try:``の中でいったんアクセスしてみる、ために使ってます。

1

仕様追加

2019/04/12 15:33

投稿

kou0179
kou0179

スコア304

test CHANGED
@@ -147,3 +147,15 @@
147
147
  sys.exit(0)
148
148
 
149
149
  ```
150
+
151
+
152
+
153
+ #### 仕様
154
+
155
+ - ファイル名を標準入力で受け付け開きます。存在しない場合は終了します。
156
+
157
+ - 何行目から読み込むか標準入力で受け付けます。存在しない行が指定された場合は終了します。
158
+
159
+ - 指定された行から100行、単語数のカウント を行先頭に追記したファイルを「count_元ファイル名」で保存します。
160
+
161
+ - 指定された行から、元ファイルの最後行が100行未満の場合は、最後行まで上述の処理を行います。