python - 如何在课程中导入 Turtle 模块?
问题描述
我在 python 中绘制分形树,这是我的方法(它有效):
def fractal(length):
if lenght < 1:
return
else:
turtle.forward(length)
turtle.left(30)
fractal(length*0.67)
turtle.right(60)
fractal(length*0.67)
turtle.left(30)
turtle.backward(length)
现在我试图在一个类中实现它,但我不知道我应该如何使用海龟命令来做到这一点。
我是编码新手,所以请不要对我的代码太苛刻地评判我。
我试过这样的事情:
class fractalTree():
from turtle import *
def __init__(self, angle, factor):
self.angle = angle
self.factor = factor
def fractal(self, length):
if length < 1:
return
else:
self.turtle.forward(length)
self.turtle.left(self.angle)
fractal(length * self.factor)
self.turtle.right(self.angle * 2)
fractal(length * self.factor)
self.turtle.left(self.angle)
self.turtle.backward(length)
test = fractalTree(14, 2/3)
test.fractal(100)
解决方案
有几种方法可以解决这个问题。您的自定义类可能包含一只乌龟:
from turtle import Screen, Turtle
class fractalTree():
def __init__(self, angle, factor):
self.angle = angle
self.factor = factor
self.turtle = Turtle()
def fractal(self, length):
if length < 1:
return
self.turtle.forward(length)
self.turtle.left(self.angle)
self.fractal(length * self.factor)
self.turtle.right(self.angle * 2)
self.fractal(length * self.factor)
self.turtle.left(self.angle)
self.turtle.backward(length)
screen = Screen()
screen.mode('Logo') # being lazy, make the tree upright
test = fractalTree(30, 2 / 3)
screen.tracer(False)
test.fractal(100)
screen.tracer(True)
screen.exitonclick()
或者,您的自定义类可能会变成乌龟:
class fractalTree(Turtle):
def __init__(self, angle, factor):
super().__init__()
self.angle = angle
self.factor = factor
def fractal(self, length):
if length < 1:
return
self.forward(length)
self.left(self.angle)
self.fractal(length * self.factor)
self.right(self.angle * 2)
self.fractal(length * self.factor)
self.left(self.angle)
self.backward(length)
或者,您可以按照您似乎正在做的事情,让您的自定义类只使用一只乌龟。
推荐阅读
- javascript - 如何在 JavaScript 中检索 Promise 的值
- date - 在logstash中解析特定日期
- python - Twilio,收集挂起,在大提示下我可以停止收集,并发送部分结果
- python - ''AttributeError: module 'selenium.webdriver' has no attribute 'Chrome''' 我正在从终端运行文件
- javascript - 错误:已超过期限 - 调用 firebase 可调用云函数 (onCall) 时。onRequest 工作正常
- java - Java Stream映射到多个属性
- ios - Swift TableView 人口
- git - 在 git rebase 期间备份到以前的冲突
- sql - 定义与整个表的关系
- java - 如何在 UML 中对 DAO 建模