回答編集履歴
2
追記
answer
CHANGED
@@ -34,9 +34,13 @@
|
|
34
34
|
flag = False
|
35
35
|
```
|
36
36
|
|
37
|
-
トップレベル以外で関数を定義するのはわりあい高度なテク
|
37
|
+
トップレベル以外で関数を定義するのは、わりあい高度なテクです。
|
38
|
-
その利点や使い方が明確に分からないうちは避けた方が良いです。
|
38
|
+
ですので、その利点や使い方が明確に分からないうちは避けた方が良いです。
|
39
39
|
|
40
|
+
また、今回の場合そもそもフラグなんて必要なく、
|
41
|
+
外部のループを無限ループにして適宜breakすれば良いだけの話です。
|
42
|
+
|
43
|
+
---
|
40
44
|
なんというか、継ぎ接ぎな印象のコードです。
|
41
45
|
一度書籍や[チュートリアル](https://docs.python.jp/3/tutorial/index.html)などで体系的に学ぶことをお勧めします。
|
42
46
|
|
1
追記
answer
CHANGED
@@ -38,4 +38,19 @@
|
|
38
38
|
その利点や使い方が明確に分からないうちは避けた方が良いです。
|
39
39
|
|
40
40
|
なんというか、継ぎ接ぎな印象のコードです。
|
41
|
-
一度書籍や[チュートリアル](https://docs.python.jp/3/tutorial/index.html)などで体系的に学ぶことをお勧めします。
|
41
|
+
一度書籍や[チュートリアル](https://docs.python.jp/3/tutorial/index.html)などで体系的に学ぶことをお勧めします。
|
42
|
+
|
43
|
+
バグそのものの原因
|
44
|
+
---
|
45
|
+
関数内のローカル変数とモジュールレベルの変数が別物になっているからです。
|
46
|
+
```Python
|
47
|
+
>>> a = 0
|
48
|
+
>>> def func():
|
49
|
+
... a = 42
|
50
|
+
...
|
51
|
+
>>> func()
|
52
|
+
>>> print(a)
|
53
|
+
0
|
54
|
+
```
|
55
|
+
|
56
|
+
globalというキーワードもありますが、今はまだ手を出すべきでは無いでしょう。
|