回答編集履歴

2

追記

2018/11/10 16:36

投稿

LouiS0616
LouiS0616

スコア35658

test CHANGED
@@ -70,11 +70,19 @@
70
70
 
71
71
 
72
72
 
73
- トップレベル以外で関数を定義するのはわりあい高度なテクなの
73
+ トップレベル以外で関数を定義するのはわりあい高度なテクです。
74
74
 
75
- その利点や使い方が明確に分からないうちは避けた方が良いです。
75
+ ですので、その利点や使い方が明確に分からないうちは避けた方が良いです。
76
76
 
77
77
 
78
+
79
+ また、今回の場合そもそもフラグなんて必要なく、
80
+
81
+ 外部のループを無限ループにして適宜breakすれば良いだけの話です。
82
+
83
+
84
+
85
+ ---
78
86
 
79
87
  なんというか、継ぎ接ぎな印象のコードです。
80
88
 

1

追記

2018/11/10 16:36

投稿

LouiS0616
LouiS0616

スコア35658

test CHANGED
@@ -79,3 +79,33 @@
79
79
  なんというか、継ぎ接ぎな印象のコードです。
80
80
 
81
81
  一度書籍や[チュートリアル](https://docs.python.jp/3/tutorial/index.html)などで体系的に学ぶことをお勧めします。
82
+
83
+
84
+
85
+ バグそのものの原因
86
+
87
+ ---
88
+
89
+ 関数内のローカル変数とモジュールレベルの変数が別物になっているからです。
90
+
91
+ ```Python
92
+
93
+ >>> a = 0
94
+
95
+ >>> def func():
96
+
97
+ ... a = 42
98
+
99
+ ...
100
+
101
+ >>> func()
102
+
103
+ >>> print(a)
104
+
105
+ 0
106
+
107
+ ```
108
+
109
+
110
+
111
+ globalというキーワードもありますが、今はまだ手を出すべきでは無いでしょう。