回答編集履歴

11

2023/06/04 09:33

投稿

退会済みユーザー
test CHANGED
@@ -28,12 +28,13 @@
28
28
  (検索サイトによる翻訳「'Tuple'オブジェクトは整数として解釈できません」)
29
29
  というエラーになる。
30
30
 
31
- なんでかというと、range関数は、引数に、1個以上3個以下の整数値しか受け取れないから。
31
+ なんでかというと、range関数は、引数に、1個以上3個以下の整数値しか受け取れないから。
32
32
   
33
+ range関数に対して、
33
- data= (50,100,5) (=タプル)に対して、アンパックせずに
34
+ (50,100,5) というタプルアンパックせずに渡すと、
34
- range(data) を実行しようとすると、整数値しか受け取れないrange関数にタプルという「整数値ではない」オブジェクトを渡すことになるから、エラーになる。
35
+ 整数値しか受け取れないrange関数にタプルという「整数値ではない」オブジェクトを渡すことになるから、エラーになる。
35
-  
36
+   
36
- *をつけてdataを3つの整数値にアンパックすれば、range関数に3つの整数の引数を渡すことになるから、正常に実行できる。
37
+ 一方、 *をつけてdataを3つの整数値にアンパックした場合は、range関数に3つの整数の引数を渡すことになるんで、正常に実行できる。
37
38
 
38
39
  (「3つ以下の要素を持つタプルを渡したら自動的にアンパックしてくれれば直感的で楽なのにどうしてそうなってないの?」って思うかもしれないけど、そういうものだと割り切るしかない)
39
40
 

10

2023/06/04 09:10

投稿

退会済みユーザー
test CHANGED
@@ -25,6 +25,7 @@
25
25
  ```
26
26
  これを実行すると
27
27
  TypeError: 'tuple' object cannot be interpreted as an integer
28
+ (検索サイトによる翻訳「'Tuple'オブジェクトは整数として解釈できません」)
28
29
  というエラーになる。
29
30
 
30
31
  なんでかというと、range関数は、引数に、1個以上3個以下の整数値しか受け取れないから。

9

2023/06/04 09:00

投稿

退会済みユーザー
test CHANGED
@@ -1,6 +1,6 @@
1
1
 
2
- 質問のコードを実行した場合、argにバインドされるのは、
2
+ 質問のコードを実行した場合、argに代入されるのは、
3
- {'A':98, 'B':76, 'C':54, 'D':56, 'E':78,'F':90} という辞書(dictオブジェクト)。これがまるごと代入される。
3
+ {'A':98, 'B':76, 'C':54, 'D':56, 'E':78,'F':90} という辞書(dictオブジェクト)。
4
4
 
5
5
  で、リストとは異なり、辞書({'A':98, 'B':76, 'C':54, 'D':56, 'E':78,'F':90})にたいしてfor ky in arg:のように、for文を使うと、
6
6
  左のkyには、辞書の各要素の全体({'A':98})ではなく、辞書の各要素の「キー」({'A':98}のキーである'A')が順次代入される。

8

2023/06/04 08:59

投稿

退会済みユーザー
test CHANGED
@@ -1,9 +1,9 @@
1
1
 
2
2
  質問のコードを実行した場合、argにバインドされるのは、
3
- {'A':98, 'B':76, 'C':54, 'D':56, 'E':78,'F':90} という辞書(dictオブジェクト)。これがまるごとバインドされる。
3
+ {'A':98, 'B':76, 'C':54, 'D':56, 'E':78,'F':90} という辞書(dictオブジェクト)。これがまるごと代入される。
4
4
 
5
5
  で、リストとは異なり、辞書({'A':98, 'B':76, 'C':54, 'D':56, 'E':78,'F':90})にたいしてfor ky in arg:のように、for文を使うと、
6
- 左のkyには、辞書の各要素の全体({'A':98})ではなく、辞書の各要素の「キー」({'A':98}のキーである'A')が順次バインドされる。
6
+ 左のkyには、辞書の各要素の全体({'A':98})ではなく、辞書の各要素の「キー」({'A':98}のキーである'A')が順次代入される。
7
7
 
8
8
 
9
9
  だから

7

2023/06/04 06:29

投稿

退会済みユーザー
test CHANGED
@@ -34,4 +34,7 @@
34
34
   
35
35
  *をつけてdataを3つの整数値にアンパックすれば、range関数に3つの整数の引数を渡すことになるから、正常に実行できる。
36
36
 
37
+ (「3つ以下の要素を持つタプルを渡したら自動的にアンパックしてくれれば直感的で楽なのにどうしてそうなってないの?」って思うかもしれないけど、そういうものだと割り切るしかない)
37
38
 
39
+
40
+

6

2023/06/04 06:26

投稿

退会済みユーザー
test CHANGED
@@ -29,7 +29,7 @@
29
29
 
30
30
  なんでかというと、range関数は、引数に、1個以上3個以下の整数値しか受け取れないから。
31
31
   
32
- data= (50,100,5)に対して
32
+ data= (50,100,5) (=タプル)に対して、アンパックせずに
33
33
  range(data) を実行しようとすると、整数値しか受け取れないrange関数に、タプルという「整数値ではない」オブジェクトを渡すことになるから、エラーになる。
34
34
   
35
35
  *をつけてdataを3つの整数値にアンパックすれば、range関数に3つの整数の引数を渡すことになるから、正常に実行できる。

5

2023/06/04 06:25

投稿

退会済みユーザー
test CHANGED
@@ -1,13 +1,13 @@
1
1
 
2
2
  質問のコードを実行した場合、argにバインドされるのは、
3
- {'A':98, 'B':76, 'C':54, 'D':56, 'E':78,'F':90} という辞書みたいなもの。これがまるごとバインドされる。
3
+ {'A':98, 'B':76, 'C':54, 'D':56, 'E':78,'F':90} という辞書(dictオブジェクト)。これがまるごとバインドされる。
4
4
 
5
- で、リストとは異なり、辞書みたいなやつarg)にたいしてfor ky in arg:のように、for文を使うと、
5
+ で、リストとは異なり、辞書({'A':98, 'B':76, 'C':54, 'D':56, 'E':78,'F':90})にたいしてfor ky in arg:のように、for文を使うと、
6
6
  左のkyには、辞書の各要素の全体({'A':98})ではなく、辞書の各要素の「キー」({'A':98}のキーである'A')が順次バインドされる。
7
7
 
8
8
 
9
9
  だから
10
- 実行すると
10
+ print(ky + ' : ' +str(arg[ky])) を実行すると
11
11
  'A':98 : 98 (〜略)
12
12
  とならず
13
13
  A : 98 (〜略)

4

2023/06/04 06:22

投稿

退会済みユーザー
test CHANGED
@@ -3,14 +3,14 @@
3
3
  {'A':98, 'B':76, 'C':54, 'D':56, 'E':78,'F':90} という辞書みたいなもの。これがまるごとバインドされる。
4
4
 
5
5
  で、リストとは異なり、辞書みたいなやつ(arg)にたいしてfor ky in arg:のように、for文を使うと、
6
- 左のkyには、辞書全体({'A':98})ではなく、辞書の「キー」({'A':98}のキーである'A')が順次バインドされる。
6
+ 左のkyには、辞書の各要素の全体({'A':98})ではなく、辞書の各要素の「キー」({'A':98}のキーである'A')が順次バインドされる。
7
7
 
8
8
 
9
9
  だから
10
- 実行
10
+ 実行すると
11
11
  'A':98 : 98 (〜略)
12
12
  とならず
13
- A : 98
13
+ A : 98 (〜略)
14
14
  となる。
15
15
 
16
16
 

3

2023/06/04 06:20

投稿

退会済みユーザー
test CHANGED
@@ -27,10 +27,11 @@
27
27
  TypeError: 'tuple' object cannot be interpreted as an integer
28
28
  というエラーになる。
29
29
 
30
- なんでかというと、range関数は、引数に、1個以上3個以下の整数値しか受け取れない。
30
+ なんでかというと、range関数は、引数に、1個以上3個以下の整数値しか受け取れないから
31
+  
31
32
  data= (50,100,5)に対して
32
33
  range(data) を実行しようとすると、整数値しか受け取れないrange関数に、タプルという「整数値ではない」オブジェクトを渡すことになるから、エラーになる。
33
-
34
+  
34
35
  *をつけてdataを3つの整数値にアンパックすれば、range関数に3つの整数の引数を渡すことになるから、正常に実行できる。
35
36
 
36
37
 

2

2023/06/04 06:19

投稿

退会済みユーザー
test CHANGED
@@ -27,7 +27,7 @@
27
27
  TypeError: 'tuple' object cannot be interpreted as an integer
28
28
  というエラーになる。
29
29
 
30
- なんでかというと、range関数は、引数に、1個以上3個未満の整数値しか受け取れない。
30
+ なんでかというと、range関数は、引数に、1個以上3個以下の整数値しか受け取れない。
31
31
  data= (50,100,5)に対して
32
32
  range(data) を実行しようとすると、整数値しか受け取れないrange関数に、タプルという「整数値ではない」オブジェクトを渡すことになるから、エラーになる。
33
33
 

1

2023/06/04 06:18

投稿

退会済みユーザー
test CHANGED
@@ -14,11 +14,11 @@
14
14
  となる。
15
15
 
16
16
 
17
- 辞書とリストで扱いが異なるのはなんでなの?馬鹿なの?って思うかもしれないけど、そういうものだと覚えるしかない。
17
+ 辞書とリストで扱いが異なるのはなんでなの?って思うかもしれないけど、そういうものだと覚えるしかない。
18
18
 
19
19
  > なぜタプルのままではなくてアンパックをして3つの引数にしなければならなかったのか?アンパックしなくても実行結果は同じではないのか、
20
20
 
21
- アンパックしなくても実行結果は同じではないのかって疑問を持つなら、アンパックせずに試してみればいいのになんでやらないの?
21
+ アンパックしなくても実行結果は同じではないのかって疑問を持つなら、アンパックせずに試してみればいい
22
22
  ```
23
23
  data= (50,100,5)
24
24
  print(list(range(data)))