Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法在While循环中分散、打印、显示()_Python - Fatal编程技术网

Python 无法在While循环中分散、打印、显示()

Python 无法在While循环中分散、打印、显示(),python,Python,在我的代码底部。这是不方便的,我想我的循环无休止地允许1,2,3之间的选择,而不必重新运行程序。为什么Python的图形在运行时会崩溃 更新 通过使用plt.draw(),我能够使图形至少显示,但它仍然没有响应。如果没有响应,则意味着它不会再次显示提示,这是因为plt.show()将导致程序停止,直到窗口关闭。您可以用plt.draw()替换plt.show(),但要真正启动windows,您需要处于交互模式。这是通过在任何draw调用之前调用plt.ion()来实现的(我把它放在while T

在我的代码底部。这是不方便的,我想我的循环无休止地允许1,2,3之间的选择,而不必重新运行程序。为什么Python的图形在运行时会崩溃

更新
通过使用plt.draw(),我能够使图形至少显示,但它仍然没有响应。

如果没有响应,则意味着它不会再次显示提示,这是因为plt.show()将导致程序停止,直到窗口关闭。您可以用plt.draw()替换plt.show(),但要真正启动windows,您需要处于交互模式。这是通过在任何draw调用之前调用plt.ion()来实现的(我把它放在while True之前:)。我已经测试过了,这应该可以实现你想要的行为


编辑:由于您没有重新绘制相同的数据,因此调用draw()会将数据附加到特定的绘图中(即反复键入1将继续添加点)。我不知道您在寻找什么类型的行为,但如果您想清除数据,您可能希望在每次分散调用之前调用plt.clf。

这样做效果很小。事实上,没有什么是我没有异议的。这样做会导致图形崩溃和内核崩溃。我所希望的是能够选择我的三个图形中的一个一次显示。但我希望这是一个循环,这样我就不必每次都重新启动程序。像这样做对我来说非常有效,没有崩溃。崩溃时输出的是什么错误?它实际上会导致窗口不响应。Ctrl+Alt+Del以关闭窗口并重新启动Corpody中崩溃的内核。您尝试了我链接的版本吗?如果从命令行python[filename]运行它,对我来说没有问题
import math
import pylab as plt
import numpy
from numpy import sqrt
from scipy.integrate import quad
import random

numpy.seterr(divide='ignore', invalid='ignore')
def integrand (x):
    return sqrt(1-x**2)
    
q1area, err = quad(integrand,0,1)

print "This program estimates the convergence of Pi to a ratio of one."
while True:
    print "Please choose from one of the five following options:"
    print " 1. 10^1\n 2. 10^2\n 3. 10^3\n"
    choice = int(raw_input())
    options = {1,2,3}
        
    if choice == 1:
        plt.xlim([0,15])
        plt.ylim([-5,5])

        x = numpy.linspace(0,15,500)
        y = numpy.sqrt(1-x**2)
        z = 1+x*0
        
        xcord = []
        ycord = []
        under = []
        above = []
        pratiolist = []
        yvalues = []
        xvalues = range(1,11)

        for i in range(10):
            xcord.append(random.random())
            ycord.append(random.random())

        for j in ycord:
            if (j <= q1area):
                under.append(1)
    
            else:
                above.append(1)
                
            punder = len(under)
            if punder == 0:
                punder = punder + 1
            
            pabove = len(above)
            if pabove == 0:
                pabove = pabove + 1
            
            pratio = punder / float(pabove)
            pratiolist.append(pratio)
            
        for k in pratiolist:
            rtpi = k / float(math.pi)
            yvalues.append(rtpi)
        
        plt.scatter(xvalues,yvalues,c='b')
        plt.plot(x,z,'g')
        plt.show()
        
    if choice == 2:
        plt.xlim([0,110])
        plt.ylim([-5,5])

        x = numpy.linspace(0,110,500)
        y = numpy.sqrt(1-x**2)
        z = 1+x*0
        
        xcord = []
        ycord = []
        under = []
        above = []
        pratiolist = []
        yvalues = []
        xvalues = range(1,101)

        for i in range(100):
            xcord.append(random.random())
            ycord.append(random.random())

        for j in ycord:
            if (j <= q1area):
                under.append(1)
    
            else:
                above.append(1)
                
            punder = len(under)
            if punder == 0:
                punder = punder + 1
            
            pabove = len(above)
            if pabove == 0:
                pabove = pabove + 1
            
            pratio = punder / float(pabove)
            pratiolist.append(pratio)
            
        for k in pratiolist:
            rtpi = k / float(math.pi)
            yvalues.append(rtpi)
        
        plt.scatter(xvalues,yvalues,c='b')
        plt.plot(x,z,'g')
        plt.show()
        
    if choice == 3:
        plt.xlim([0,1100])
        plt.ylim([-5,5])

        x = numpy.linspace(0,1100,500)
        y = numpy.sqrt(1-x**2)
        z = 1+x*0
        
        xcord = []
        ycord = []
        under = []
        above = []
        pratiolist = []
        yvalues = []
        xvalues = range(1,1001)

        for i in range(1000):
            xcord.append(random.random())
            ycord.append(random.random())

        for j in ycord:
            if (j <= q1area):
                under.append(1)
    
            else:
                above.append(1)
                
            punder = len(under)
            if punder == 0:
                punder = punder + 1
            
            pabove = len(above)
            if pabove == 0:
                pabove = pabove + 1
            
            pratio = punder / float(pabove)
            pratiolist.append(pratio)
            
        for k in pratiolist:
            rtpi = k / float(math.pi)
            yvalues.append(rtpi)
            
        plt.scatter(xvalues,yvalues,c='b')
        plt.plot(x,z,'g')
        plt.show()
        
    while choice not in options:
        print "Not a valid choice!\n"
        break
        
#plt.scatter(xvalues,yvalues,c='b')
#plt.plot(x,z,'g')
#plt.show()
plt.scatter(xvalues,yvalues,c='b')
plt.plot(x,z,'g')
plt.show()