![](/img/trans.png)
[英]Python 3 Turtle: How can I use the turtle.penup() function for all turtles with on one command?
[英]I got an error in the penup() function of the turtle module
這是我收到的錯誤消息:
Traceback (most recent call last):
File "\\tsclient\E\Python34\Doc\mazes5.py", line 62, in <module>
sky.penup()
File "C:\Python34\lib\turtle.py", line 2107, in penup
self.pen(pendown=False)
File "C:\Python34\lib\turtle.py", line 2425, in pen
self._newLine()
File "C:\Python34\lib\turtle.py", line 3287, in _newLine
self._pencolor, self._pensize)
File "C:\Python34\lib\turtle.py", line 545, in _drawline
self.cv.coords(lineitem, *cl)
File "<string>", line 1, in coords
File "C:\Python34\lib\tkinter\__init__.py", line 2307, in coords
self.tk.call((self._w, 'coords') + args))]
File "C:\Python34\lib\tkinter\__init__.py", line 2305, in <listcomp>
return [getdouble(x) for x in
ValueError: could not convert string to float: 'floating'
我不知道該怎么解決這個問題,因為penup()是不需要輸入的函數。 另外,我的迷宮發生器抽屜全部弄皺了,並朝着我從未說過會畫的方向拉。 這已經發生了多次。
這是它崩潰前生成的屏幕截圖。 我告訴它以270度為增量旋轉。
根據要求,這是我的代碼。 警告,我不知道錯誤在哪里,所以我將粘貼整個內容。 有問題的線趨於底部。
import turtle, random
from turtle import *
maze=[]
mazelev=[]
x=int(input("How many columns?\n"))
y=int(input("How many rows?\n"))
siz=int(input("How wide should the passages be?\n"))
maze=[[5]*x for n in range(y)]
wn=turtle.Screen()
wn.setup(2000, 1000, 0, 0)
sky=turtle.Turtle()
sky.speed(0)
wn.delay(0)
sky.goto(-700, -350)
wn.bgcolor("black")
sky.color("white")
sky.pensize(1)
n=0
tot=0
for i in range(x+1):
cx=sky.xcor()
cy=sky.ycor()
sky.pendown()
sky.goto(cx, cy+(siz*y))
sky.penup()
sky.goto(cx+siz, -350)
sky.goto(-700,-350)
for i in range(y+1):
cx=sky.xcor()
cy=sky.ycor()
sky.pendown()
sky.goto(cx+(siz*x), cy)
sky.penup()
sky.goto(-700, cy+siz)
sky.pensize(siz-1)
sky.color("red")
sky.speed(0)
turtle.tracer(0,0)
num=0
eks=0
why=0
direc=1
sky.goto(-700+(.5*siz),-350+(.5*siz))
for i in range(y):
for j in range(x):
eks=-700+(.5*siz)+siz*j
why=-350+(.5*siz)+siz*i
sky.goto(eks, why) #second error (when first error is made a comment)
direc=(direc+siz-1)
direc=direc//1
direc=direc*270
sky.seth(direc)
sky.pendown()
sky.forward(siz) #third error
sky.penup() #first error
direc=direc/90
wn.update() #fourth error
sky.goto(-700+(.5*siz),-350-(.5*siz)+siz*y)
sky.pendown()
sky.goto(-700+(.5*siz)+(siz*x),-350-(.5*siz)+siz*y)
sky.penup()
sky.hideturtle()
wn.update()
print("done")
您的錯誤來自direc
變為無限的事實。 坦率地說,我不明白該變量應該代表什么,但是您似乎在每次迭代時都將siz-1
添加到該變量,然后將其有效乘以3
(首先乘以270
,然后再除以90
)。 這意味着它呈指數增長,並且由於當您進行除法時它成為浮點數,因此當float
數據類型不再能代表它時,它最終會溢出到無窮大。
當給定無限值時,Python的turtle
模塊似乎表現不佳,但這並不意味着它不是您自己的代碼中的錯誤。
如果說direc
是一個角度,則您可能希望對它做模360運算。這至少可以防止它不受控制地增長(盡管這可能使您的代碼毫無意義)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.