0

みんな!ユーザーとのやり取りを伴う関数を呼び出そうとすると、この問題が発生し、何が問題なのかわかりません。入力を必要とする機能は、他の機能から分離すると完璧に機能します。

Jupyter Notebook [py2] を使用しています。

私が話している機能は次のとおりです。

import numpy as np
import matplotlib.pyplot as plt
#Distribución Exponencial
def dist_exp():
    a = int(raw_input("Ingrese Lambda: "))
    b = int(raw_input("Ingrese la cantidad de numeros a generar: "))
    beta = 1./a

    exp = np.random.exponential((beta), b) #el primer valor es Beta (1/Lambda)

    mediana_t = np.log(2)/(a*a)

    print exp #imprime los números aleatorios generados
    print "Estadísticos teóricos: ", "Minimo=0", " Maximo= infinito", " Media={}".format(beta), " Mediana={}".format(mediana_t), " Varianza={}".format(1/(a*a))
        #imprime los estadísticos teóricos
    print "Estadísticos muestrales: ", "Minimo={}".format(np.min(exp)), " Maximo={}".format(np.max(exp)), " Media={}".format(np.mean(exp)), " Mediana={}".format(np.median(exp)), " Varianza={}".format(np.var(exp))
        #imprime los estadísticos muestrales

    #bins son las clases para el histograma
    if b<1000: #para los bins 
        bn = 20
    else:
        bn = 200
    h = plt.hist(exp, bins=bn, normed=True) #bins son las clases para el histograma

    plt.show() #despliega el histograma

この関数 (および他の 4 つの同様の関数) を次から呼び出しています。

from ipywidgets import widgets, interactive
from IPython.display import display

print "Ingrese la distribucion deseada. Las opciones son: Binomial, Exponencial, Geometrica, Lognormal y Triangular"

text = widgets.Text()
display(text)

def handle_submit(sender):
    print(text.value)
    if text.value == "Binomial":
        return dist_bin()
    elif text.value == "Exponencial":
        return dist_exp()
    elif text.value == "Geometrica":
        return dist_geom()
    elif text.value == "Lognormal":
        return dist_log()
    elif text.value == "Triangular":
        return dist_tri()
    else:
        print "Por favor ingrese una distribucion valida. Ponga atencion a las opciones."

text.on_submit(handle_submit)

したがって、ユーザーがテキストボックスに有効な文字列を入力するたびに、関数を実行する必要がありますが、すぐに次のエラーが発生します。

---------------------------------------------------------------------------
EOFError                                  Traceback (most recent call last)
<ipython-input-8-1e49bbab45fa> in handle_submit(sender)
     10     print(text.value)
     11     if text.value == "Binomial":
---> 12         return dist_bin()
     13     elif text.value == "Exponencial":
     14         return dist_exp()

<ipython-input-5-081f517da431> in dist_bin()
      1 #Distribución Binomial
      2 def dist_bin():
----> 3     n = int(raw_input("Ingrese n: ")) #número de intentos
      4     p = float(raw_input("Ingrese p: ")) #probabilidad de cada intento
      5     num  = int(raw_input("Ingrese la cantidad de numeros a generar: "))

EOFError: EOF when reading a line

どんな助けにも感謝します。

皆さん、ありがとうございました!

4

0 に答える 0