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

回答編集履歴

3

d

2019/06/11 16:17

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -1,3 +1,5 @@
1
+ ## コードの内容とエラーの原因
2
+
1
3
  ループでは次の1~3の処理が行われています。
2
4
 
3
5
  1. リスト `tv` の `i` 番目の要素を `tv[i]` で取得し、変数 `new` に代入する。
@@ -6,8 +8,10 @@
6
8
 
7
9
  もし、3番目を `tv = new` としてしまうと、リストであったはずの `tv` が上書きされてしまい、次のループで1に戻って来た時点で `tv` がリストではなく、先程の new の値になってしまっているので、エラーとなります。
8
10
 
9
- コードを簡略化すると以下ようなりま
11
+ ## リスト各文字を大文字にするコード
10
12
 
13
+ 先程のコードを簡略化すると以下のようになります。
14
+
11
15
  ```python
12
16
  tv = ["GOT", "Narcos", "Vice"]
13
17
 

2

d

2019/06/11 16:17

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -4,4 +4,26 @@
4
4
  2. `new = new.upper()` で大文字にする。
5
5
  3. tv[i] = new でリスト tv の i 番目の要素に大文字にした new を代入する。
6
6
 
7
- もし、3番目を `tv = new` としてしまうと、リストであったはずの `tv` が上書きされてしまい、次のループで1に戻って来た時点で `tv` がリストではなく、先程の new の値になってしまっているので、エラーとなります。
7
+ もし、3番目を `tv = new` としてしまうと、リストであったはずの `tv` が上書きされてしまい、次のループで1に戻って来た時点で `tv` がリストではなく、先程の new の値になってしまっているので、エラーとなります。
8
+
9
+ コードを簡略化すると以下のようになります。
10
+
11
+ ```python
12
+ tv = ["GOT", "Narcos", "Vice"]
13
+
14
+ for i in range(len(tv)):
15
+ # i 番目の要素を大文字にする。
16
+ tv[i] = tv[i].upper()
17
+
18
+ print(tv) # ['GOT', 'NARCOS', 'VICE']
19
+ ```
20
+
21
+ 内包記法でやると以下
22
+
23
+ ```python
24
+ tv = ["GOT", "Narcos", "Vice"]
25
+
26
+ # すべての要素を大文字にする。
27
+ tv = [x.upper() for x in tv]
28
+ print(tv) # ['GOT', 'NARCOS', 'VICE']
29
+ ```

1

d

2019/06/11 16:16

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  ループでは次の1~3の処理が行われています。
2
2
 
3
- 1. リスト tv の i 番目の要素を `tv[i]` で取得し、変数 `new` に代入
3
+ 1. リスト `tv``i` 番目の要素を `tv[i]` で取得し、変数 `new` に代入する。
4
4
  2. `new = new.upper()` で大文字にする。
5
5
  3. tv[i] = new でリスト tv の i 番目の要素に大文字にした new を代入する。
6
6
 
7
- もし、3番目を `tv = new` としてしまうと、リストであった `tv` が上書きされてしまい、次のループで1に来た時点で `tv` がリストではなく、先程の new の値になってしまっているので、エラーとなります。
7
+ もし、3番目を `tv = new` としてしまうと、リストであったはずの `tv` が上書きされてしまい、次のループで1に戻って来た時点で `tv` がリストではなく、先程の new の値になってしまっているので、エラーとなります。