繁体   English   中英

螺旋描记器在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    

我该如何解决这个错误?

函数formulaXformulaY隐式返回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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM