回答編集履歴

14

表現改善

2022/10/01 12:00

投稿

Cocode
Cocode

スコア2314

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

誤字

2022/10/01 11:50

投稿

Cocode
Cocode

スコア2314

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
- `i`の値が、引数に`(5)`といれたので、5ループ分(0から4まで)変わることを利用して、連番のID番号を生成する関数です。
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の使い道

2022/10/01 11:45

投稿

Cocode
Cocode

スコア2314

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

2022/10/01 11:04

投稿

Cocode
Cocode

スコア2314

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

2022/10/01 09:48

投稿

Cocode
Cocode

スコア2314

test CHANGED
@@ -49,5 +49,5 @@
49
49
 
50
50
  ---
51
51
 
52
- ということで、`for ... in xxx:`の`...`の部分には何を書いてもいいですが、数値が入る場合は慣習的に`i`と書かれることが多いです。
52
+ ということで、`for ... in xxx:`の`...`の部分には何を書いてもいいですが、インデックス番号が入る場合は慣習的に`i`と書かれることが多いです。
53
53
  そして今回の場合、`i`は何回目のループかをカウントするのに使われています。

9

add

2022/10/01 09:30

投稿

Cocode
Cocode

スコア2314

test CHANGED
@@ -50,4 +50,4 @@
50
50
  ---
51
51
 
52
52
  ということで、`for ... in xxx:`の`...`の部分には何を書いてもいいですが、数値が入る場合は慣習的に`i`と書かれることが多いです。
53
-
53
+ そして今回の場合、`i`は何回目のループかをカウントするのに使われています。

8

誤字

2022/10/01 09:28

投稿

Cocode
Cocode

スコア2314

test CHANGED
@@ -25,7 +25,7 @@
25
25
  ```
26
26
  ↑を実行していただいたらわかるんですけど、
27
27
 
28
- `for i in range(5):`は、0-5までの数値を数えるわけですから、
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の役割について

2022/10/01 09:27

投稿

Cocode
Cocode

スコア2314

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

丁寧に解説

2022/10/01 08:31

投稿

Cocode
Cocode

スコア2314

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した後、すぐに`print(i)`をすると、`4`と出力されます。
9
+ - forを`range(5)`でした後、すぐに`print(i)`をすると、`4`と出力されます。
10
+ - forが5周で、iの値が0→1→...→4でループ終了
9
11
  - `i`をつかってエラーがおきてなんやかんやした後、`print(i)`をすると、`0`と出力されます。
10
- - エラーで`i`の中身がすっとんでリセットされているようです。
11
- - またはforの0回目でエラーが起きてストップしているので、`0`になる。
12
+ - forの0回目でエラーが起きてストップしているので、`0`になる。

5

2022/10/01 08:23

投稿

Cocode
Cocode

スコア2314

test CHANGED
@@ -1,4 +1,5 @@
1
- `print(w)`の間違いだと思います。変数`w`に、入力した文字列が格納されているので。
1
+ `print(w)`の間違いだと思います。
2
+ 変数`w`に、入力した文字列が格納されているので。→`w += input() + ","`
2
3
 
3
4
  ---
4
5
 

4

追記

2022/10/01 08:20

投稿

Cocode
Cocode

スコア2314

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

2022/10/01 08:17

投稿

Cocode
Cocode

スコア2314

test CHANGED
@@ -1,4 +1,4 @@
1
- `print(w)`の間違いだと思います。変数に、入力した文字列が格納されているので。
1
+ `print(w)`の間違いだと思います。変数`w`に、入力した文字列が格納されているので。
2
2
 
3
3
  ---
4
4
 

2

追記

2022/10/01 08:16

投稿

Cocode
Cocode

スコア2314

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の理由追記

2022/10/01 08:15

投稿

Cocode
Cocode

スコア2314

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`と出力されます。