質問するログイン新規登録

回答編集履歴

3

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

2019/04/12 15:38

投稿

kou0179
kou0179

スコア304

answer CHANGED
@@ -95,10 +95,6 @@
95
95
  というコードがあるのは分かりますか?
96
96
  この部分で、``current_row``には最初、元のテキストのある一行がそのまま入ってますが、これに文字列結合でただ単語数を追加してるだけです!
97
97
 
98
- 例えば、
99
- ``current_row``に ``Hello! My name is kou0179``という文字列(str,文字列型)、
100
- ``current_row_word_len``に``5``という整数(int,整数型)が入っていたとします。
101
-
102
98
  まず、
103
99
  ```python
104
100
  current_row = str(current_row_word_len) + " words | " + current_row

2

追加質問回答

2019/04/12 15:38

投稿

kou0179
kou0179

スコア304

answer CHANGED
@@ -78,4 +78,77 @@
78
78
  - ファイル名を標準入力で受け付け開きます。存在しない場合は終了します。
79
79
  - 何行目から読み込むか標準入力で受け付けます。存在しない行が指定された場合は終了します。
80
80
  - 指定された行から100行、単語数のカウント を行先頭に追記したファイルを「count_元ファイル名」で保存します。
81
- - 指定された行から、元ファイルの最後行が100行未満の場合は、最後行まで上述の処理を行います。
81
+ - 指定された行から、元ファイルの最後行が100行未満の場合は、最後行まで上述の処理を行います。
82
+
83
+ ## 追加質問回答
84
+
85
+ ##### 追加質問①
86
+
87
+ > 一つ目は単語の数の表示なのですが、
88
+ > I am a Japanese. (4)
89
+ > このように表示するにはどうすればいいのでしょうか?
90
+
91
+ 回答欄ソースコード、コメント,空行を除く、下から4行目あたりに
92
+
93
+ `` current_row = str(current_row_word_len) + " words | " + current_row ``
94
+
95
+ というコードがあるのは分かりますか?
96
+ この部分で、``current_row``には最初、元のテキストのある一行がそのまま入ってますが、これに文字列結合でただ単語数を追加してるだけです!
97
+
98
+ 例えば、
99
+ ``current_row``に ``Hello! My name is kou0179``という文字列(str,文字列型)、
100
+ ``current_row_word_len``に``5``という整数(int,整数型)が入っていたとします。
101
+
102
+ まず、
103
+ ```python
104
+ current_row = str(current_row_word_len) + " words | " + current_row
105
+ ```
106
+ この行は、``current_row``へ「何か」を代入する行というのはお分かりいただけると思います。
107
+
108
+ そして、その「何か」、すなわち、
109
+ `` str(current_row_word_len) + " words | " + current_row ``
110
+ は何をしているかというと、
111
+ 次に以下3つを結合しています。
112
+
113
+ - ``str(current_row_word_len)`` current_row_word_lenを文字列型へ変換したもの
114
+ - `` words | `` 単純な文字列
115
+ - ``current_row`` 文字列型変数(現在処理中の元ファイルの行の文字列)
116
+
117
+ それら結合した物を、``current_row``へぶち込みなおす処理をしてます。
118
+
119
+ なので、``I am a Japanese. (4)``という表示にしたければ
120
+
121
+ ```python
122
+ current_row = current_row + " (" + str(current_row_word_len) + ")"
123
+ ```
124
+
125
+ で、いけそうですが、無理です。(私はこれでいけると思った・・・)
126
+ なぜならば、``current_row``の一番最後の文字に改行コードが入ってしまっています。
127
+
128
+ よって、以下のようにcurrent_row最後の改行を消して、さらに改行コードを連結すればいけます。
129
+
130
+ ```python
131
+ current_row = current_row.rstrip('\n') + " (" + str(current_row_word_len) + ")\n"
132
+ ```
133
+ ポイントとしては
134
+ - ``current_row.rstrip('\n')``で改行コードを消してる
135
+ - ``")\n"``で最後にカッコを閉じるだけでなく改行を入れてあげる
136
+ です。
137
+
138
+ ##### 追加質問②
139
+
140
+ > 二つ目は
141
+ > ```python
142
+ > try:
143
+ > # 指定された行にアクセスしてみる
144
+ > _ = file_rows[start_row]
145
+ > ```
146
+ > の初めの_の部分はどういうことを表しているのでしょうか?
147
+
148
+ これは特にPythonでは意味は無いです。紛らわしくてごめんなさい。
149
+ 一部のプログラミング言語では、ブランク識別子等と呼ばれ、要は捨てるための変数と考えて頂けると分かりやすいです。
150
+ ただ、Pythonにはその概念が無いのでこのようにして使いました。
151
+ もっとスマートなやり方あれば教えてください笑
152
+
153
+ 今回の場合、別に今すぐには``file_rows[start_row]``に対して用事は無いけど、
154
+ もし存在しなかったら困るから念のため``try:``の中でいったんアクセスしてみる、ために使ってます。

1

仕様追加

2019/04/12 15:33

投稿

kou0179
kou0179

スコア304

answer CHANGED
@@ -72,4 +72,10 @@
72
72
  new_file.close()
73
73
  #正常終了
74
74
  sys.exit(0)
75
- ```
75
+ ```
76
+
77
+ #### 仕様
78
+ - ファイル名を標準入力で受け付け開きます。存在しない場合は終了します。
79
+ - 何行目から読み込むか標準入力で受け付けます。存在しない行が指定された場合は終了します。
80
+ - 指定された行から100行、単語数のカウント を行先頭に追記したファイルを「count_元ファイル名」で保存します。
81
+ - 指定された行から、元ファイルの最後行が100行未満の場合は、最後行まで上述の処理を行います。