关闭屏幕上的Python龟错误 - 如何像计算机一样思考科学家:使用Python学习3

时间:2017-10-08 10:51:20

标签: python python-3.5 turtle-graphics

当我运行此代码时

import turtle
import time

def show_poly():
    try:
        win = turtle.Screen()
        tess = turtle.Turtle()
        n = int(input("How many sides do you want in your polygon?"))
        angle = 360 / n
        for i in range(n):
            tess.forward(10)
            tess.left(angle)
        time.sleep(3)
    finally:
        win.bye()

show_poly()
show_poly()
show_poly()

我得到的第一个电话正常工作比我收到此错误

  

追踪(最近一次通话):      文件" /home/turte.py" ;,第19行,       在show_poly()

中      

文件" /home/turte.py",第8行,在show_poly中       tess = turtle.Turtle()

     

文件" /usr/lib/python3.5/turtle.py",第3816行, init       可见=可见)

     

文件" /usr/lib/python3.5/turtle.py",第2557行, init       self._update()

     

文件" /usr/lib/python3.5/turtle.py",第2660行,在_update中       self._update_data()

     

文件" /usr/lib/python3.5/turtle.py",第2646行,在_update_data中       self.screen._incrementudc()

     

文件" /usr/lib/python3.5/turtle.py",第1292行,_incrementudc

     

举起终结者turtle.Terminator

如果我理解了这个问题,即使我关闭了最后一个屏幕也无法创建新屏幕。 我运行python 3.5

2 个答案:

答案 0 :(得分:1)

python3.5 odoo-bin --addons=addons/返回的对象是一个单例,因此您的代码正在积极地对抗模块设计。根据{{​​3}},您应该在应用程序中使用g1(x): return max(0, (x[0] - 1)**2 + (x[1] - 1)**2 - 1.05**2) Case1: sol1 = np.array( [ [0, 0], [1, 1], [0, 1], [1, 0], [0.2, 0.7], [0.5, 0.5], [0.75, 0], [0.25, 0.8], [0.5, 0.6], [0.2, 0.7], ] ) v = numpy.apply_along_axis(g1, 1, sol1) This produce: [ 0.8975, 0., 0., 0., 0., 0., 0., 0., 0., 0.] as expected. Case2: # The same array with rows shuffled. sols = numpy.array( [ [0, 1], [0.2, 0.7], [0.5, 0.5], [0.75, 0], [0.2, 0.7], [1, 0], [0.25, 0.8], [0.5, 0.6], [0, 0], [1, 1], ] ) v = numpy.apply_along_axis(g1, 1, sols) This produces: [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.] which is wrong. Should be: [ 0., 0., 0., 0., 0., 0., 0., 0., 0.8975, 0.] 的实例。

turtle.Screen()

答案 1 :(得分:0)

另一种方法是在乌龟内工作并尽可能避免使用tkinter。在下面的解决方案中,我们只需清除它并重新绘制,而不是破坏窗口并创建一个新窗口:

from turtle import Turtle, Screen
from time import sleep

def show_poly(turtle):
    n = 0

    while n < 3:
        try:
            n = int(input("How many sides do you want in your polygon? "))
        except ValueError:
            pass

    angle = 360 / n

    for _ in range(n):
        turtle.forward(50)
        turtle.left(angle)

    sleep(3)
    turtle.clear()

window = Screen()

tess = Turtle()

show_poly(tess)
show_poly(tess)
show_poly(tess)

window.bye()

这也应兼容Python 2.7和Python 3