当我运行此代码时
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
答案 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