質問編集履歴

3

追記しました。

2018/10/26 04:15

投稿

Ykkykk
Ykkykk

スコア140

test CHANGED
File without changes
test CHANGED
@@ -151,3 +151,13 @@
151
151
  ```
152
152
 
153
153
  となっています。これだとfor文の中ではインクリメントされた```a```が使われていないということだと思うのですが、インクリメントされた```a```をfor文の中でも使用したいと思っています。
154
+
155
+
156
+
157
+ ##追記
158
+
159
+
160
+
161
+ 上記のコードでも、for文の中でインクリメントされたaの値が使用されているということをお教えいただきました。
162
+
163
+ ```a```がある値の間for文の中の計算を行い、そのたびごとに条件を評価し、条件から外れた場合には```a```をインクリメントして再びfor文の計算に戻る、という繰り返しを行いたいのですが、そのためにはwhile文を使わないということでしょうか?

2

追記しました。

2018/10/26 04:15

投稿

Ykkykk
Ykkykk

スコア140

test CHANGED
File without changes
test CHANGED
@@ -64,6 +64,90 @@
64
64
 
65
65
  上記のコードだと、インクリメントしたあとにうまくfor文に戻れていないような気がしています。
66
66
 
67
- while文をこに置けばよいかわからないのですが、どのようにすればうまくループを回しながら計算することができるのでしょうか?
67
+ どのようにすればfor文に戻って計算することができるのでしょうか?
68
68
 
69
+
70
+
71
+ ## 修正と追記
72
+
73
+ ```Python3
74
+
75
+ lst = [1, 5, 2, 32, 3, 41, 0, 5, 26, 7, 18, 9, 10]
76
+
77
+ lst2 = [1 ,-2 ,-3 ,1 ,3 ,4 ,5 ,-6, -7, 8, 9]
78
+
79
+ a = 0
80
+
81
+ len_lst = len(lst) - 1
82
+
83
+
84
+
85
+ print("forの前のa", a)
86
+
87
+ for i in lst:
88
+
89
+ c = lst2[a] +lst2[a+1]
90
+
91
+ d = lst2[a] + i
92
+
93
+ print("for", a)
94
+
95
+ while a < len_lst:
96
+
97
+ while lst2[a] * d < 0:
98
+
99
+ a += 1
100
+
101
+ print("while", a)
102
+
103
+ else:
104
+
105
+ a += 1
106
+
69
- ご教示いただけますと幸いです。よろしくお願いします。
107
+ print("else", a)
108
+
109
+ ```
110
+
111
+ 以上のようにelseを置くと無限ループを回避することはできているのですが、出力としては、
112
+
113
+ ```Python3
114
+
115
+ len 10
116
+
117
+ forの前 0
118
+
119
+ for 0
120
+
121
+ 2
122
+
123
+ else 1
124
+
125
+ while 2
126
+
127
+ while 3
128
+
129
+ else 4
130
+
131
+ else 5
132
+
133
+ else 6
134
+
135
+ else 7
136
+
137
+ while 8
138
+
139
+ while 9
140
+
141
+ else 10
142
+
143
+ Traceback (most recent call last):
144
+
145
+ File "loop.py", line 9, in <module>
146
+
147
+ c = i + lst2[a] + lst2[a+1]
148
+
149
+ IndexError: list index out of range
150
+
151
+ ```
152
+
153
+ となっています。これだとfor文の中ではインクリメントされた```a```が使われていないということだと思うのですが、インクリメントされた```a```をfor文の中でも使用したいと思っています。

1

コードに修正を加えました。

2018/10/26 03:16

投稿

Ykkykk
Ykkykk

スコア140

test CHANGED
File without changes
test CHANGED
@@ -18,11 +18,13 @@
18
18
 
19
19
  c = lst2[a] +lst2[a+1]
20
20
 
21
+ d = lst2[a] + i
22
+
21
- print(c)
23
+ print(c, d)
22
24
 
23
25
  while a < len_lst:
24
26
 
25
- while lst2[a] * c < 0:
27
+ while lst2[a] * d < 0:
26
28
 
27
29
  a += 1
28
30
 
@@ -36,9 +38,7 @@
36
38
 
37
39
  forの前のa 0
38
40
 
39
- -1
40
-
41
- 最後のa 1
41
+ 6, 2
42
42
 
43
43
  ```
44
44
 
@@ -50,7 +50,7 @@
50
50
 
51
51
  File "loop.py", line 11, in <module>
52
52
 
53
- while lst2[a] * c < 0:
53
+ while lst2[a] * d < 0:
54
54
 
55
55
  KeyboardInterrupt
56
56
 
@@ -58,7 +58,9 @@
58
58
 
59
59
  エラーメッセージとしては以上の文言が表示されます。
60
60
 
61
- 処理としては、インクリメントする変数```a```を用意し、```lst2[a] * c < 0```であればaを増やしながら計算を行い、そうでない場合は```a```をインクリメントせずに計算を行うということがしたいです。
61
+ 処理としては、インクリメントする変数```a```を用意し、```lst2[a] * d < 0```であればaを増やし計算を行い、そうでない場合は```a```をインクリメントせずに計算を行うということがしたいです。
62
+
63
+
62
64
 
63
65
  上記のコードだと、インクリメントしたあとにうまくfor文に戻れていないような気がしています。
64
66