質問編集履歴
3
追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -74,4 +74,9 @@
|
|
74
74
|
c = i + lst2[a] + lst2[a+1]
|
75
75
|
IndexError: list index out of range
|
76
76
|
```
|
77
|
-
となっています。これだとfor文の中ではインクリメントされた```a```が使われていないということだと思うのですが、インクリメントされた```a```をfor文の中でも使用したいと思っています。
|
77
|
+
となっています。これだとfor文の中ではインクリメントされた```a```が使われていないということだと思うのですが、インクリメントされた```a```をfor文の中でも使用したいと思っています。
|
78
|
+
|
79
|
+
##追記
|
80
|
+
|
81
|
+
上記のコードでも、for文の中でインクリメントされたaの値が使用されているということをお教えいただきました。
|
82
|
+
```a```がある値の間for文の中の計算を行い、そのたびごとに条件を評価し、条件から外れた場合には```a```をインクリメントして再びfor文の計算に戻る、という繰り返しを行いたいのですが、そのためにはwhile文を使わないということでしょうか?
|
2
追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -31,5 +31,47 @@
|
|
31
31
|
処理としては、インクリメントする変数```a```を用意し、```lst2[a] * d < 0```であればaを増やして計算を行い、そうでない場合は```a```をインクリメントせずに計算を行うということがしたいです。
|
32
32
|
|
33
33
|
上記のコードだと、インクリメントしたあとにうまくfor文に戻れていないような気がしています。
|
34
|
-
|
34
|
+
どのようにすればfor文に戻って計算することができるのでしょうか?
|
35
|
+
|
36
|
+
## 修正と追記
|
37
|
+
```Python3
|
38
|
+
lst = [1, 5, 2, 32, 3, 41, 0, 5, 26, 7, 18, 9, 10]
|
39
|
+
lst2 = [1 ,-2 ,-3 ,1 ,3 ,4 ,5 ,-6, -7, 8, 9]
|
40
|
+
a = 0
|
41
|
+
len_lst = len(lst) - 1
|
42
|
+
|
43
|
+
print("forの前のa", a)
|
44
|
+
for i in lst:
|
45
|
+
c = lst2[a] +lst2[a+1]
|
46
|
+
d = lst2[a] + i
|
47
|
+
print("for", a)
|
48
|
+
while a < len_lst:
|
49
|
+
while lst2[a] * d < 0:
|
50
|
+
a += 1
|
51
|
+
print("while", a)
|
52
|
+
else:
|
53
|
+
a += 1
|
35
|
-
|
54
|
+
print("else", a)
|
55
|
+
```
|
56
|
+
以上のようにelseを置くと無限ループを回避することはできているのですが、出力としては、
|
57
|
+
```Python3
|
58
|
+
len 10
|
59
|
+
forの前 0
|
60
|
+
for 0
|
61
|
+
2
|
62
|
+
else 1
|
63
|
+
while 2
|
64
|
+
while 3
|
65
|
+
else 4
|
66
|
+
else 5
|
67
|
+
else 6
|
68
|
+
else 7
|
69
|
+
while 8
|
70
|
+
while 9
|
71
|
+
else 10
|
72
|
+
Traceback (most recent call last):
|
73
|
+
File "loop.py", line 9, in <module>
|
74
|
+
c = i + lst2[a] + lst2[a+1]
|
75
|
+
IndexError: list index out of range
|
76
|
+
```
|
77
|
+
となっています。これだとfor文の中ではインクリメントされた```a```が使われていないということだと思うのですが、インクリメントされた```a```をfor文の中でも使用したいと思っています。
|
1
コードに修正を加えました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -8,27 +8,28 @@
|
|
8
8
|
print("forの前のa", a)
|
9
9
|
for i in lst:
|
10
10
|
c = lst2[a] +lst2[a+1]
|
11
|
+
d = lst2[a] + i
|
11
|
-
print(c)
|
12
|
+
print(c, d)
|
12
13
|
while a < len_lst:
|
13
|
-
while lst2[a] *
|
14
|
+
while lst2[a] * d < 0:
|
14
15
|
a += 1
|
15
16
|
print("最後のa", a)
|
16
17
|
```
|
17
18
|
以上のようなコードを書いたのですが、出力としては、
|
18
19
|
```Python3
|
19
20
|
forの前のa 0
|
20
|
-
-1
|
21
|
-
|
21
|
+
6, 2
|
22
22
|
```
|
23
23
|
と表示されたあと処理が動かなくなり、Ctrl+Cで処理を中断しました。
|
24
24
|
```Python3
|
25
25
|
^CTraceback (most recent call last):
|
26
26
|
File "loop.py", line 11, in <module>
|
27
|
-
while lst2[a] *
|
27
|
+
while lst2[a] * d < 0:
|
28
28
|
KeyboardInterrupt
|
29
29
|
```
|
30
30
|
エラーメッセージとしては以上の文言が表示されます。
|
31
|
-
処理としては、インクリメントする変数```a```を用意し、```lst2[a] *
|
31
|
+
処理としては、インクリメントする変数```a```を用意し、```lst2[a] * d < 0```であればaを増やして計算を行い、そうでない場合は```a```をインクリメントせずに計算を行うということがしたいです。
|
32
|
+
|
32
33
|
上記のコードだと、インクリメントしたあとにうまくfor文に戻れていないような気がしています。
|
33
34
|
while文をどこに置けばよいのかわからないのですが、どのようにすればうまくループを回しながら計算することができるのでしょうか?
|
34
35
|
ご教示いただけますと幸いです。よろしくお願いします。
|