回答編集履歴
14
表現改善
test
CHANGED
@@ -19,7 +19,7 @@
|
|
19
19
|
`for 変数名 in リスト※:`についておさらいしましょう。
|
20
20
|
(※リストおよびリストのようなものも含まれます。)
|
21
21
|
|
22
|
-
for文はリストの最初から最後までを1つずつ順番に
|
22
|
+
for文はリストの最初から最後までを1つずつ順番に取得しながら、処理をしていく記述です。
|
23
23
|
そしてループごとに、そのループでのリストの現在値が変数の中に代入されます。
|
24
24
|
変数名には何を書いてもいいですが、分かりやすいものがいいでしょう。
|
25
25
|
|
@@ -72,7 +72,10 @@
|
|
72
72
|
```
|
73
73
|
このコードだと`i`を処理の中で全く使っていません。
|
74
74
|
|
75
|
+
このような場合どうするかと言うと、何かしら変数名は書かないとエラーになってしまうので苦肉の策で、
|
75
|
-
|
76
|
+
**変数は使用しないという意図を示す**ために慣例で`_`という**変数名**をつけてやります。
|
76
77
|
これはpythonに変数を使わないという書き方が標準搭載されているわけではなく、**ただたんに慣習的なもの**です。
|
77
78
|
|
79
|
+
`print(_)`とすると、しっかり値が代入されているのが見えます。`_`という変数名なので!
|
80
|
+
|
78
81
|
ということで上記の例だと`for _ in range(n):`と書いた方が親切です。
|
13
誤字
test
CHANGED
@@ -41,7 +41,7 @@
|
|
41
41
|
|
42
42
|
### i の意味がある場合😄
|
43
43
|
forの中の変数名には、happyやらyeahやらmoneyやらだいたい何を指定してもいいのですが、
|
44
|
-
- 変数の中身がなんな
|
44
|
+
- 変数の中身がなんなのか分かりやすい名前にすること。
|
45
45
|
- また、慣習的に決まった名付け方法があります。
|
46
46
|
|
47
47
|
たとえばご質問の`i`はインデックス(index)のイニシャルです。
|
@@ -56,7 +56,7 @@
|
|
56
56
|
return ids
|
57
57
|
generateId(5) # ['id-0', 'id-1', 'id-2', 'id-3', 'id-4']
|
58
58
|
```
|
59
|
-
|
59
|
+
引数に`(5)`といれたので、`i`の値が5ループ分(0から4まで)変わることを利用して、連番のID番号を生成する関数です。
|
60
60
|
このようにインデックス番号を処理に利用したい時に`i`とか`index`とか書きます。
|
61
61
|
|
62
62
|
### i の意味がない場合👎
|
@@ -71,7 +71,8 @@
|
|
71
71
|
print(w)
|
72
72
|
```
|
73
73
|
このコードだと`i`を処理の中で全く使っていません。
|
74
|
+
|
74
|
-
このような場合どうするかと言うと、**変数は使用しないという意図を示す**ために慣例で`_`という変数名を使用します。
|
75
|
+
このような場合どうするかと言うと、**変数は使用しないという意図を示す**ために慣例で`_`という**変数名**を使用します。
|
75
76
|
これはpythonに変数を使わないという書き方が標準搭載されているわけではなく、**ただたんに慣習的なもの**です。
|
76
77
|
|
77
|
-
とうことで上記の例だと`for _ in range(n):`と書いた方が親切です。
|
78
|
+
ということで上記の例だと`for _ in range(n):`と書いた方が親切です。
|
12
iの使い道
test
CHANGED
@@ -15,4 +15,63 @@
|
|
15
15
|
|
16
16
|
(コメント欄での質問を受けて追記)
|
17
17
|
|
18
|
+
### for文の基本の理解
|
19
|
+
`for 変数名 in リスト※:`についておさらいしましょう。
|
20
|
+
(※リストおよびリストのようなものも含まれます。)
|
21
|
+
|
22
|
+
for文はリストの最初から最後までを1つずつ順番に移動しながら、処理をしていく記述です。
|
23
|
+
そしてループごとに、そのループでのリストの現在値が変数の中に代入されます。
|
24
|
+
変数名には何を書いてもいいですが、分かりやすいものがいいでしょう。
|
25
|
+
|
26
|
+
例)
|
27
|
+
```python
|
28
|
+
names = ['Tanaka', 'Satoh', 'Suzuki']
|
29
|
+
for name in names:
|
30
|
+
print(name)
|
31
|
+
# 1回目のループ: name = 'Tanaka' が代入される
|
32
|
+
# 2回目のループ: name = 'Satoh' が代入される
|
33
|
+
# 3回目のループ: name = 'Suzuki' が代入される
|
34
|
+
|
35
|
+
for i in range(3): # [0, 1, 2] として捉える
|
36
|
+
print(i)
|
37
|
+
# 1回目のループ: i = 0 が代入される
|
38
|
+
# 2回目のループ: i = 1 が代入される
|
39
|
+
# 3回目のループ: i = 2 が代入される
|
18
|
-
|
40
|
+
```
|
41
|
+
|
42
|
+
### i の意味がある場合😄
|
43
|
+
forの中の変数名には、happyやらyeahやらmoneyやらだいたい何を指定してもいいのですが、
|
44
|
+
- 変数の中身がなんなとか分かりやすい名前にすることと、
|
45
|
+
- また、慣習的に決まった名付け方法があります。
|
46
|
+
|
47
|
+
たとえばご質問の`i`はインデックス(index)のイニシャルです。
|
48
|
+
インデックス番号を処理の中で使いたい時に`i`や`idx`や`index`などとという変数名を付けられることが多いです。
|
49
|
+
|
50
|
+
例)
|
51
|
+
```python
|
52
|
+
def generateId(number):
|
53
|
+
ids = []
|
54
|
+
for i in range(number):
|
55
|
+
ids.append('id-' + str(i))
|
56
|
+
return ids
|
57
|
+
generateId(5) # ['id-0', 'id-1', 'id-2', 'id-3', 'id-4']
|
58
|
+
```
|
59
|
+
`i`の値が、引数に`(5)`といれたので、5ループ分(0から4まで)変わることを利用して、連番のID番号を生成する関数です。
|
60
|
+
このようにインデックス番号を処理に利用したい時に`i`とか`index`とか書きます。
|
61
|
+
|
62
|
+
### i の意味がない場合👎
|
63
|
+
質問者様のコードを例に出してみます。
|
64
|
+
|
65
|
+
```python
|
66
|
+
n = int(input())
|
67
|
+
w = "Hello "
|
68
|
+
|
69
|
+
for i in range(n):
|
70
|
+
w += input() + ","
|
71
|
+
print(w)
|
72
|
+
```
|
73
|
+
このコードだと`i`を処理の中で全く使っていません。
|
74
|
+
このような場合どうするかと言うと、**変数は使用しないという意図を示す**ために慣例で`_`という変数名を使用します。
|
75
|
+
これはpythonに変数を使わないという書き方が標準搭載されているわけではなく、**ただたんに慣習的なもの**です。
|
76
|
+
|
77
|
+
とうことで上記の例だと`for _ in range(n):`と書いた方が親切です。
|
11
on working
test
CHANGED
@@ -15,39 +15,4 @@
|
|
15
15
|
|
16
16
|
(コメント欄での質問を受けて追記)
|
17
17
|
|
18
|
-
慣習的に`i`はindexの省略です。
|
19
|
-
インデックス番号をカウントする時によく使われます。
|
20
|
-
`for ... in xxx:`のxxxが数値として数えられるものの場合によく使われます。
|
21
|
-
|
22
|
-
```python
|
23
|
-
for i in range(5):
|
24
|
-
print(i)
|
25
|
-
|
18
|
+
修正中
|
26
|
-
↑を実行していただいたらわかるんですけど、
|
27
|
-
|
28
|
-
`for i in range(5):`は、0-4までの数値を数えるわけですから、
|
29
|
-
- 1回目のループ:`i = 0`
|
30
|
-
- 2回目のループ:`i = 1`
|
31
|
-
- 3回目のループ:`i = 2`
|
32
|
-
- 4回目のループ:`i = 3`
|
33
|
-
- 5回目のループ:`i = 4`
|
34
|
-
|
35
|
-
と自動的に増えてくれます。
|
36
|
-
別にfor...inの中に`index`とかいても`happy`とかいても、なんでも大丈夫です。
|
37
|
-
|
38
|
-
---
|
39
|
-
|
40
|
-
これが例えば
|
41
|
-
```python
|
42
|
-
names = ['Tanaka', 'Satoh', 'Suzuki'] #といったリストがあるとした場合、
|
43
|
-
for name in names: #などと書かれることが多いと思います。
|
44
|
-
print(name)
|
45
|
-
```
|
46
|
-
- 1回目のループ:`name = 'Tanaka'`
|
47
|
-
- 2回目のループ:`name = 'Satoh'`
|
48
|
-
- 3回目のループ:`name = 'Suzuki'`
|
49
|
-
|
50
|
-
---
|
51
|
-
|
52
|
-
ということで、`for ... in xxx:`の`...`の部分には何を書いてもいいですが、インデックス番号が入る場合は慣習的に`i`と書かれることが多いです。
|
53
|
-
そして今回の場合、`i`は何回目のループかをカウントするのに使われています。
|
10
Index
test
CHANGED
@@ -49,5 +49,5 @@
|
|
49
49
|
|
50
50
|
---
|
51
51
|
|
52
|
-
ということで、`for ... in xxx:`の`...`の部分には何を書いてもいいですが、
|
52
|
+
ということで、`for ... in xxx:`の`...`の部分には何を書いてもいいですが、インデックス番号が入る場合は慣習的に`i`と書かれることが多いです。
|
53
53
|
そして今回の場合、`i`は何回目のループかをカウントするのに使われています。
|
9
add
test
CHANGED
@@ -50,4 +50,4 @@
|
|
50
50
|
---
|
51
51
|
|
52
52
|
ということで、`for ... in xxx:`の`...`の部分には何を書いてもいいですが、数値が入る場合は慣習的に`i`と書かれることが多いです。
|
53
|
-
|
53
|
+
そして今回の場合、`i`は何回目のループかをカウントするのに使われています。
|
8
誤字
test
CHANGED
@@ -25,7 +25,7 @@
|
|
25
25
|
```
|
26
26
|
↑を実行していただいたらわかるんですけど、
|
27
27
|
|
28
|
-
`for i in range(5):`は、0-
|
28
|
+
`for i in range(5):`は、0-4までの数値を数えるわけですから、
|
29
29
|
- 1回目のループ:`i = 0`
|
30
30
|
- 2回目のループ:`i = 1`
|
31
31
|
- 3回目のループ:`i = 2`
|
7
iの役割について
test
CHANGED
@@ -10,3 +10,44 @@
|
|
10
10
|
- forが5周で、iの値が0→1→...→4でループ終了
|
11
11
|
- `i`をつかってエラーがおきてなんやかんやした後、`print(i)`をすると、`0`と出力されます。
|
12
12
|
- forの0回目でエラーが起きてストップしているので、`0`になる。
|
13
|
+
|
14
|
+
---
|
15
|
+
|
16
|
+
(コメント欄での質問を受けて追記)
|
17
|
+
|
18
|
+
慣習的に`i`はindexの省略です。
|
19
|
+
インデックス番号をカウントする時によく使われます。
|
20
|
+
`for ... in xxx:`のxxxが数値として数えられるものの場合によく使われます。
|
21
|
+
|
22
|
+
```python
|
23
|
+
for i in range(5):
|
24
|
+
print(i)
|
25
|
+
```
|
26
|
+
↑を実行していただいたらわかるんですけど、
|
27
|
+
|
28
|
+
`for i in range(5):`は、0-5までの数値を数えるわけですから、
|
29
|
+
- 1回目のループ:`i = 0`
|
30
|
+
- 2回目のループ:`i = 1`
|
31
|
+
- 3回目のループ:`i = 2`
|
32
|
+
- 4回目のループ:`i = 3`
|
33
|
+
- 5回目のループ:`i = 4`
|
34
|
+
|
35
|
+
と自動的に増えてくれます。
|
36
|
+
別にfor...inの中に`index`とかいても`happy`とかいても、なんでも大丈夫です。
|
37
|
+
|
38
|
+
---
|
39
|
+
|
40
|
+
これが例えば
|
41
|
+
```python
|
42
|
+
names = ['Tanaka', 'Satoh', 'Suzuki'] #といったリストがあるとした場合、
|
43
|
+
for name in names: #などと書かれることが多いと思います。
|
44
|
+
print(name)
|
45
|
+
```
|
46
|
+
- 1回目のループ:`name = 'Tanaka'`
|
47
|
+
- 2回目のループ:`name = 'Satoh'`
|
48
|
+
- 3回目のループ:`name = 'Suzuki'`
|
49
|
+
|
50
|
+
---
|
51
|
+
|
52
|
+
ということで、`for ... in xxx:`の`...`の部分には何を書いてもいいですが、数値が入る場合は慣習的に`i`と書かれることが多いです。
|
53
|
+
|
6
丁寧に解説
test
CHANGED
@@ -1,11 +1,12 @@
|
|
1
|
-
`print(w)`
|
1
|
+
ちょっとした書き間違いで、正しくは`print(w)`と書きますと、`Hello ,satou,suzuki,`がきちんと出力されます。
|
2
2
|
変数`w`に、入力した文字列が格納されているので。→`w += input() + ","`
|
3
3
|
|
4
4
|
---
|
5
5
|
|
6
|
-
`0`は最後に`i`
|
6
|
+
`0`の出力理由は、最後に`i`に格納された値だからです。
|
7
7
|
- 質問者様のforのコードを行った後、すぐに`print(i)`をすると、`1`と出力されます。
|
8
|
+
- forが2周で、iの値が0→1でループ終了
|
8
|
-
- forを5
|
9
|
+
- forを`range(5)`でした後、すぐに`print(i)`をすると、`4`と出力されます。
|
10
|
+
- forが5周で、iの値が0→1→...→4でループ終了
|
9
11
|
- `i`をつかってエラーがおきてなんやかんやした後、`print(i)`をすると、`0`と出力されます。
|
10
|
-
- エラーで`i`の中身がすっとんでリセットされているようです。
|
11
|
-
-
|
12
|
+
- forの0回目でエラーが起きてストップしているので、`0`になる。
|
5
w
test
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
`print(w)`の間違いだと思います。
|
1
|
+
`print(w)`の間違いだと思います。
|
2
|
+
変数`w`に、入力した文字列が格納されているので。→`w += input() + ","`
|
2
3
|
|
3
4
|
---
|
4
5
|
|
4
追記
test
CHANGED
@@ -7,3 +7,4 @@
|
|
7
7
|
- forを5周した後、すぐに`print(i)`をすると、`4`と出力されます。
|
8
8
|
- `i`をつかってエラーがおきてなんやかんやした後、`print(i)`をすると、`0`と出力されます。
|
9
9
|
- エラーで`i`の中身がすっとんでリセットされているようです。
|
10
|
+
- またはforの0回目でエラーが起きてストップしているので、`0`になる。
|
3
w
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
`print(w)`の間違いだと思います。変数
|
1
|
+
`print(w)`の間違いだと思います。変数`w`に、入力した文字列が格納されているので。
|
2
2
|
|
3
3
|
---
|
4
4
|
|
2
追記
test
CHANGED
@@ -6,3 +6,4 @@
|
|
6
6
|
- 質問者様のforのコードを行った後、すぐに`print(i)`をすると、`1`と出力されます。
|
7
7
|
- forを5周した後、すぐに`print(i)`をすると、`4`と出力されます。
|
8
8
|
- `i`をつかってエラーがおきてなんやかんやした後、`print(i)`をすると、`0`と出力されます。
|
9
|
+
- エラーで`i`の中身がすっとんでリセットされているようです。
|
1
0の理由追記
test
CHANGED
@@ -1 +1,8 @@
|
|
1
1
|
`print(w)`の間違いだと思います。変数wに、入力した文字列が格納されているので。
|
2
|
+
|
3
|
+
---
|
4
|
+
|
5
|
+
`0`は最後に`i`を使った時の最終の値が出力されています。
|
6
|
+
- 質問者様のforのコードを行った後、すぐに`print(i)`をすると、`1`と出力されます。
|
7
|
+
- forを5周した後、すぐに`print(i)`をすると、`4`と出力されます。
|
8
|
+
- `i`をつかってエラーがおきてなんやかんやした後、`print(i)`をすると、`0`と出力されます。
|