在 Python 中使用 Turtle 的螺旋计
Spirograph Using Turtle in Python
我正在尝试使用 Python 的乌龟为螺旋计编写代码,但我不断收到奇怪的错误。
到目前为止,这是我的代码:
import turtle
from math import *
def formulaX(R, r, p, t):
x = (R-r)*cos(t) - (r+p)*cos((R-r)/r*t)
def formulaY(R, r, p, t):
y = (R-r)*sin(t) - (r+p)*sin((R-r)/r*t)
def t_iterating(R, r, p):
t = 0
turtle.down()
while t < 20*pi:
t = t+0.01
turtle.goto(formulaX(R, r, p, t), formulaY(R, r, p, t))
turtle.up()
def main():
R = int(input("The radius of the fixed circle: "))
r = int(input("The radius of the moving circle: "))
p = int(input("The offset of the pen point, between <10 - 100>: "))
if p < 10 or p > 100:
input("Incorrect value for p!")
t_iterating(R, r, p)
input("Hit enter to close...")
main()
出于某种原因,我不断收到以下错误:
Traceback (most recent call last):
File "/Users/liammitchell/Desktop/Comp Sci/Spirograph/spirograph.py", line 34, in <module>
main()
File "/Users/liammitchell/Desktop/Comp Sci/Spirograph/spirograph.py", line 30, in main
t_iterating(R, r, p)
File "/Users/liammitchell/Desktop/Comp Sci/Spirograph/spirograph.py", line 18, in t_iterating
turtle.goto(formulaX(R, r, p, t), formulaY(R, r, p, t))
File "<string>", line 1, in goto
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/turtle.py", line 1774, in goto
self._goto(Vec2D(*x))
TypeError: type object argument after * must be a sequence, not NoneType
如何解决这个错误?
函数 formulaX
和 formulaY
都 隐含地 return None
。您必须 return
从它们中获取一些值才能在其他函数中使用它,例如 t_iterating
.
所以你想要的是:
def formulaX(R, r, p, t):
return (R-r)*cos(t) - (r+p)*cos((R-r)/r*t)
在main()
之前添加这个
for i in range(100):
main()
我正在尝试使用 Python 的乌龟为螺旋计编写代码,但我不断收到奇怪的错误。
到目前为止,这是我的代码:
import turtle
from math import *
def formulaX(R, r, p, t):
x = (R-r)*cos(t) - (r+p)*cos((R-r)/r*t)
def formulaY(R, r, p, t):
y = (R-r)*sin(t) - (r+p)*sin((R-r)/r*t)
def t_iterating(R, r, p):
t = 0
turtle.down()
while t < 20*pi:
t = t+0.01
turtle.goto(formulaX(R, r, p, t), formulaY(R, r, p, t))
turtle.up()
def main():
R = int(input("The radius of the fixed circle: "))
r = int(input("The radius of the moving circle: "))
p = int(input("The offset of the pen point, between <10 - 100>: "))
if p < 10 or p > 100:
input("Incorrect value for p!")
t_iterating(R, r, p)
input("Hit enter to close...")
main()
出于某种原因,我不断收到以下错误:
Traceback (most recent call last):
File "/Users/liammitchell/Desktop/Comp Sci/Spirograph/spirograph.py", line 34, in <module>
main()
File "/Users/liammitchell/Desktop/Comp Sci/Spirograph/spirograph.py", line 30, in main
t_iterating(R, r, p)
File "/Users/liammitchell/Desktop/Comp Sci/Spirograph/spirograph.py", line 18, in t_iterating
turtle.goto(formulaX(R, r, p, t), formulaY(R, r, p, t))
File "<string>", line 1, in goto
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/turtle.py", line 1774, in goto
self._goto(Vec2D(*x))
TypeError: type object argument after * must be a sequence, not NoneType
如何解决这个错误?
函数 formulaX
和 formulaY
都 隐含地 return None
。您必须 return
从它们中获取一些值才能在其他函数中使用它,例如 t_iterating
.
所以你想要的是:
def formulaX(R, r, p, t):
return (R-r)*cos(t) - (r+p)*cos((R-r)/r*t)
在main()
for i in range(100):
main()