teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

追記

2018/08/14 16:49

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -74,4 +74,11 @@
74
74
  TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
75
75
  ```
76
76
 
77
- リストはintに直せないよ、とメッセージに書いてありますね。
77
+ リストはintに直せないよ、とメッセージに書いてありますね。
78
+
79
+ ---
80
+ > エラーメッセージの意味もよくわからないのでデバックできません。
81
+
82
+ **TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'**
83
+ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
84
+ **『型エラー: int()の引数は文字列かバイト列、数値でなくてはならない。リストじゃダメよ』**

3

追記

2018/08/14 16:49

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,8 +1,22 @@
1
1
  > split()関数は標準入力を文字列として分割するのですよね?
2
2
 
3
3
  概ね、はい。標準入力が絡んでいるのはinputの方ではありますが。
4
- ですので、まず分割してから、それぞれをintにキャストしないといけません。
5
4
  ```Python
5
+ >>> input().split()
6
+ 12 34
7
+ ['12', '34']
8
+ >>>
9
+ >>> '12 34'.split()
10
+ ['12', '34']
11
+ >>>
12
+ >>> s = '12 34'
13
+ >>> s.split()
14
+ ['12', '34']
15
+ ```
16
+
17
+ `12 34`のような入力を上手く捌くには、
18
+ まず分割してからそれぞれをintにキャストしないといけません。
19
+ ```Python
6
20
  >>> ab = input().split()
7
21
  12 34
8
22
  >>> ab

2

修正

2018/08/14 16:34

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  > split()関数は標準入力を文字列として分割するのですよね?
2
2
 
3
- はい。
3
+ 概ね、はい。標準入力が絡んでいるのはinputの方ではありますが。
4
4
  ですので、まず分割してから、それぞれをintにキャストしないといけません。
5
5
  ```Python
6
6
  >>> ab = input().split()

1

追記

2018/08/14 16:32

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -23,4 +23,41 @@
23
23
  12
24
24
  >>> b
25
25
  34
26
- ```
26
+ ```
27
+
28
+ エラーの再現
29
+ ---
30
+ > i = int(input()).rstrip().split(" ")
31
+ > ...
32
+ > ValueError: invalid literal for int() with base 10: '12 45'
33
+
34
+ カッコの対応がおかしく、int(input())を先に処理しようとしてしまっています。
35
+ ```Python
36
+ >>> int(input())
37
+ 12 34
38
+ Traceback (most recent call last):
39
+ File "<stdin>", line 1, in <module>
40
+ ValueError: invalid literal for int() with base 10: '12 34'
41
+ ```
42
+
43
+ > intを消してみると
44
+ > ...
45
+ > TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
46
+
47
+ 先にも述べたように、リストの各要素をintにキャストしてやらねばいけないのです。
48
+ ```Python
49
+ >>> ab = input().split()
50
+ 12 34
51
+ >>>
52
+ >>> ab
53
+ ['12', '34']
54
+ >>>
55
+ >>> int(ab[0])
56
+ 12
57
+ >>> int(ab)
58
+ Traceback (most recent call last):
59
+ File "<stdin>", line 1, in <module>
60
+ TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
61
+ ```
62
+
63
+ リストはintに直せないよ、とメッセージに書いてありますね。