回答編集履歴

1

文脈の修正

2017/02/16 01:19

投稿

miyahan
miyahan

スコア3095

test CHANGED
@@ -1,4 +1,4 @@
1
- まずはじめに、入力された値は改行が入ったひとつの文です。(\n は改行を意味します)
1
+ まずはじめに、入力された値は改行が入ったひとつの**字列**です。(\n は改行を意味します)
2
2
 
3
3
 
4
4
 
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- つぎに、readlines() を使うと、このひとつの文が改行で分割され**リスト**として返ってきます。
9
+ つぎに、readlines() を使うと、このひとつの**字列**が改行で分割され**リスト**として返ってきます。
10
10
 
11
11
 
12
12
 
@@ -30,11 +30,11 @@
30
30
 
31
31
 
32
32
 
33
- この結果を for ループで回すことによって、"スライム, 30" → "モンスター,23 " → ・・・ と値が `line` に代入されていきます。
33
+ この結果を for ループで回すことによって、リストの各要素:"スライム, 30" → "モンスター,23 " → ・・・ の**文字列**順に `line` に代入されていきます。
34
34
 
35
35
 
36
36
 
37
- そして最後に、split() を使って、`スライム, 30` がカンマによって分割され、リスト`['スライム', '30'] になります。
37
+ そして最後に、split() を使って、`スライム, 30` がカンマによって分割され、**リスト**:`['スライム', '30'] になります。
38
38
 
39
39
 
40
40
 
@@ -42,8 +42,12 @@
42
42
 
43
43
 
44
44
 
45
- というわけで、[質問点1] のリストに分割されるタイミングは、readlines() したタイミングです。
45
+ というわけで、[質問点1] の**リスト**に分割されるタイミングは、readlines() したタイミングです。
46
46
 
47
47
 
48
48
 
49
49
  また、[質問点2] ですが、read() はリストへの分割をせず、まるごと1つの**文字列**として取り込まれます。さらに文字列を for ループで回すと、1文字ずつ分割される仕様になっていますので、"ス" → "ラ" → "イ" → "ム" → ・・・ となっていきます。1文字を split(",") にしても分割できないので、enemy[1] は存在せず out of range エラーとなります。
50
+
51
+
52
+
53
+ 文字列 と リスト/辞書/タプル は混同しやすいので、今後解説サイト等を見る際に意識してみてください。理解がぐっと進むと思います。