回答編集履歴

2

解説を追加

2021/03/04 12:46

投稿

ppaul
ppaul

スコア24670

test CHANGED
@@ -1,3 +1,7 @@
1
+ - 問題点
2
+
3
+
4
+
1
5
  del ran_card [i]
2
6
 
3
7
 
@@ -6,13 +10,27 @@
6
10
 
7
11
 
8
12
 
13
+ - 対処方法
14
+
9
15
  del ran_card
10
16
 
11
17
  とすればエラーは出なくなりますが、この文自体が不要ですので、この行を削除するのが良いです。
12
18
 
13
19
 
14
20
 
15
- - 詳細
21
+ - 質問文への解
22
+
23
+ 「random.randintリストから削除したい」と書かれていますが、random.randintリストというものは存在していません。
24
+
25
+ ran_card=random.randint(1,10)はrandom.randintという関数を1と10を引数として呼び出し、その結果であるint型のオブジェクトをran_cardに入れるという式です。
26
+
27
+ その結果、ran_cardという変数が示すものはint型のオブジェクトになっています。
28
+
29
+
30
+
31
+
32
+
33
+ - 詳細説明 (難しければ読み飛ばしてください)
16
34
 
17
35
 
18
36
 

1

説明を追加

2021/03/04 12:46

投稿

ppaul
ppaul

スコア24670

test CHANGED
@@ -9,3 +9,67 @@
9
9
  del ran_card
10
10
 
11
11
  とすればエラーは出なくなりますが、この文自体が不要ですので、この行を削除するのが良いです。
12
+
13
+
14
+
15
+ - 詳細説明
16
+
17
+
18
+
19
+ ```text
20
+
21
+ del X[i]
22
+
23
+
24
+
25
+ という文はpythonではXというオブジェクトからインデックスiの要素を削除せよというpythonバイトコードに変換されます。
26
+
27
+ pythonはこのpythonバイトコードが現れると、Xが__delitem__というメソッドを持っているかを調べ、存在すればX.__delitem__(i)を呼び出します。
28
+
29
+ Xが__delitem__というメソッドを持っていない場合、
30
+
31
+ TypeError: 'type(X)' object doesn't support item deletion
32
+
33
+ というエラーメッセージを出します。
34
+
35
+ ```
36
+
37
+
38
+
39
+ 例は以下です。
40
+
41
+
42
+
43
+ ```python
44
+
45
+ >>> X = (1, 2, 3)
46
+
47
+ >>> del X[0]
48
+
49
+ Traceback (most recent call last):
50
+
51
+ File "<stdin>", line 1, in <module>
52
+
53
+ TypeError: 'tuple' object doesn't support item deletion
54
+
55
+ >>> X = 0.5
56
+
57
+ >>> del X[0]
58
+
59
+ Traceback (most recent call last):
60
+
61
+ File "<stdin>", line 1, in <module>
62
+
63
+ TypeError: 'float' object does not support item deletion
64
+
65
+ >>> X = 42
66
+
67
+ >>> del X[0]
68
+
69
+ Traceback (most recent call last):
70
+
71
+ File "<stdin>", line 1, in <module>
72
+
73
+ TypeError: 'int' object does not support item deletion
74
+
75
+ ```