回答編集履歴

4

テキスト修正

2018/01/07 06:40

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -106,7 +106,7 @@
106
106
 
107
107
 
108
108
 
109
- 最初のコードは、`i` は リストのインデクスになる想定で書いており、
109
+ 最初のコードは、`i` は リストのインデクスになる想定で書いており、
110
110
 
111
111
  0, 1, 2
112
112
 

3

テキスト修正

2018/01/07 06:40

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -90,6 +90,10 @@
90
90
 
91
91
  return list
92
92
 
93
+
94
+
95
+ all2x([1,2,3])
96
+
93
97
  ```
94
98
 
95
99
  を実行してみたりするわけです。(上記を main.py とします)

2

テキスト修正

2018/01/07 06:16

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -94,7 +94,7 @@
94
94
 
95
95
  を実行してみたりするわけです。(上記を main.py とします)
96
96
 
97
- すると、以下のように、2回目の `print(i)` で `4` が出力されます。
97
+ すると、以下のように、2回目の `print(i)` で(なんと) `4` が出力されます。
98
98
 
99
99
 
100
100
 

1

テキスト追記

2018/01/07 06:15

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -27,3 +27,85 @@
27
27
 
28
28
 
29
29
  参考になれば幸いです。
30
+
31
+
32
+
33
+ ---
34
+
35
+ 追記
36
+
37
+
38
+
39
+ ```
40
+
41
+ def all2x(list):
42
+
43
+ for i in list:
44
+
45
+ list[i]*=2
46
+
47
+ return list
48
+
49
+
50
+
51
+
52
+
53
+ all2x([1,2,3])
54
+
55
+ ```
56
+
57
+ と書いて、実行してみたときに、[発生している問題・エラーメッセージ] にあるとおり
58
+
59
+ `IndexError: list index out of range`
60
+
61
+ が出るわけですが、このメッセージは、
62
+
63
+ 「リストのインデクスがリストの許容する範囲外になっている。」
64
+
65
+ という意味です。
66
+
67
+ これを見たときに、
68
+
69
+ 「あれ? インデクスがリストの範囲外になってる?そんなはずはないだろう・・・さて?」
70
+
71
+ と思うことが大事です。
72
+
73
+ そう思えたら
74
+
75
+ 「では、範囲外になってしまったインデクスの値は何だろう?」と思うでしょう。
76
+
77
+ すると、`list[i]*=2` で、`list` のインデクスにしている `i` の値を
78
+
79
+ ループの毎回表示させるために、直前に `print(i)` を入れて
80
+
81
+ ```python
82
+
83
+ def all2x(list):
84
+
85
+ for i in list:
86
+
87
+ print(i)
88
+
89
+ list[i]*=2
90
+
91
+ return list
92
+
93
+ ```
94
+
95
+ を実行してみたりするわけです。(上記を main.py とします)
96
+
97
+ すると、以下のように、2回目の `print(i)` で `4` が出力されます。
98
+
99
+
100
+
101
+ ![イメージ説明](1fbb511f26aec9a3b3b5e1dc896c7c3a.png)
102
+
103
+
104
+
105
+ 最初のコードは、`i` は リストのインデクスになる想定で書いており、
106
+
107
+ 0, 1, 2
108
+
109
+ になることを期待しているわけですから、上記の `4` で明らかに
110
+
111
+ 何かがおかしいと思うことができます。