プログラムを実行しても結果が出力されない(エラーにはならない)。もしくは動きぱなしになる。
回答:これは練習問題2-12の回答でよく見られました。
def uni_hist(N):
x=np.random.uniform(0.0,1.0,N)
y=np.random.uniform(0.0,1.0,N)
plt.subplot(2,1,1)
plt.hist(x)
plt.title("No1:histogram")
plt.subplot(2,1,2)
plt.hist(y)
plt.title("No2:histogram")
plt.grid(True)
plt.tight_layout()
uni_hist(1000)
これは実行できますが、結果は表示されません。そこで新たに
uni_hist(1000)
を実行しようとすると、今度は実行しっぱなしになります。
この理由は、(1)結果が表示されないのは、関数uni_histの定義「だけ」を行っているから、
そして(2)実行しっぱなしになるのは、uni_histの定義から「無限ループ」に陥ったためです。
uni_histの定義の最後にあるuni_hist(1000)が原因です。インデント誤りによってこれは関数uni_histの一部になっています。つまり、例えばuni_hist(10)を実行したら、最後にこのuni_hist(1000)が呼ばれ、この実行の最後にまたuni_hist(1000)が呼ばれる、...という無限の繰り返しになっているからです(意図せずに再帰的な関数を定義してしまっている)。