我正在尝试在Python中使用turtle
来绘制正方形,每次我想命令它做某事时,我都必须写turtle
。
import turtle
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.back(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.back(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.back(200)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.back(100)
turtle.exitonclick()
我希望编写代码而不必每次都写turtle
答案 0 :(得分:8)
您可以通过编写操作从turtle
模块导入所有内容
from turtle import * # this is a wildcard import
但是,相反,您应该只import turtle as t
(或任何其他想要的东西),像这样:
import turtle as t # you can replace t with any valid variable name
由于通配符导入会造成函数定义冲突
相反,您可以仅从模块中导入所需的类(或方法)。 Turtle
是必需的导入:
from turtle import Turtle
现在,我们必须实例化它:
t = Turtle()
现在我们可以使用它:
t.do_something() # methods that act on the turtle, like forward and backward
但是,这不会导入Screen
模块,因此除非您也导入exitonclick()
,否则您将无法使用Screen
:
from turtle import Turtle, Screen
s = Screen()
s.exitonclick()
不过,正如@cdlane所指出的那样,循环实际上可能是减少必须编写的代码量的最佳选择。这段代码:
for _ in range(x):
turtle.forward(100)
turtle.right(90)
向前移动turtle
,然后向右移动x
次。
答案 1 :(得分:4)
答案 2 :(得分:4)
您是否知道有多少评论对“ from turtle import *
”的回应是“不要使用通配符导入”,就像人们建议的那样?我将进一步争论,不要做import turtle as t
,因为它会向龟暴露 functional 接口。 turtle模块是面向对象的,您只需要公开该接口即可。如果您厌倦了太多的输入,请了解循环:
from turtle import Screen, Turtle
t = Turtle()
for _ in range(4):
t.forward(100)
t.right(90)
for _ in range(4):
t.backward(100)
t.left(90)
t.backward(100)
for _ in range(3):
t.backward(100)
t.left(90)
s = Screen()
s.exitonclick()
诚然,我不介意为简短的Turtle&Tkinter示例以及Zelle图形程序导入通配符。但是,这些fd()
都是废话,而不是forward()
!庆祝成为乌龟,不要躲在壳里!
答案 3 :(得分:2)
免责声明:此答案适用于像我这样的懒人:)
已经有很好的答案,向您展示如何解决问题,并警告您有关通配符导入。
如果您只想使用乌龟模块,可以使自己的生活变得轻松,例如,最好不要只写turtle.forward(90)
,而要写forward(90)
,但是如果只写{ {1}}
再次会影响您代码的可读性,但通常需要试用
现在您的代码看起来像
编辑:按照 @chepner 的建议在一行中将导入内容修改为超级懒人
f(90)