回答編集履歴

1

コード修正、補足修正

2020/03/30 10:17

投稿

sahksas
sahksas

スコア28

test CHANGED
@@ -2,9 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- ```python
6
-
7
- s = list(input())
5
+ ~~s = list(input())
8
6
 
9
7
  for i in range(len(s)-1):
10
8
 
@@ -12,7 +10,31 @@
12
10
 
13
11
  s.pop(i-1)
14
12
 
13
+ print(''.join(s))~~
14
+
15
+ 嘘を教えてしまったので書き直しです
16
+
17
+
18
+
19
+ ```python
20
+
21
+ s = list('101B101B')
22
+
23
+ i = 0
24
+
25
+ while i < len(s):
26
+
27
+ if s[i] == 'B':
28
+
29
+ s.pop(i-1)
30
+
31
+ else:
32
+
33
+ i += 1
34
+
15
35
  print(''.join(s))
36
+
37
+ # 10B10B
16
38
 
17
39
  ```
18
40
 
@@ -26,13 +48,27 @@
26
48
 
27
49
 
28
50
 
51
+ ※追記
52
+
53
+ `for`内で削除が行われると、配列の数が合わなくなりエラーが発生するので、
54
+
55
+ `while`文で書き換えました。
56
+
57
+ `if`に当てはまらなかった場合のみ`i`にインクリメントします。
58
+
59
+ `while`の書き方についてはご自身でお調べください。
60
+
61
+
62
+
29
63
  補足としては、
30
64
 
31
- 元のコードでは`for i in range(len(s)):`
65
+ ~~元のコードでは`for i in range(len(s)):`
32
66
 
33
67
  となっていますが、`for`の後の変数`i`は0から始まり、`range(len(s))`は文字数(101Bの場合は4)になります。
34
68
 
35
- 0から4の合計5回繰り返しが起こりますが、文字は4つしか無いのでエラーが発生します。
69
+ 0から4の合計5回繰り返しが起こりますが、文字は4つしか無いのでエラーが発生します。~~
70
+
71
+ すいません気の所為です。
36
72
 
37
73
 
38
74