我正在使用Max OS X 10.10.3,我终于graphics.py在Python 3中展示了它之前没有出现任何模块.
但是,现在当我尝试import graphics,或者from graphics import *,我收到消息:
"source code string cannot contain null bytes"
Run Code Online (Sandbox Code Playgroud)
是否有任何Mac用户(使用Python 3)可能知道什么是错的?有人用过Zelle书和他的graphics.py模块吗?谢谢.
我正在阅读John Zelle撰写的Python Programming,我被困在下图所示的练习中.
您可以在下面查看我的代码.我知道代码非常难看.(任何提示都表示赞赏)

到目前为止,这是我的代码:
from graphics import *
def regression():
# creating the window for the regression line
win = GraphWin("Regression Line - Start Clicking!", 500, 500)
win.setCoords(0.0, 0.0, 10.0, 10.0)
rect = Rectangle(Point(0.5, 0.1), Point(2.5, 2.1))
rect.setFill("red")
rect.draw(win)
Text(rect.getCenter(), "Done").draw(win)
message = Text(Point(5, 0.5), "Click in this screen")
message.draw(win)
points = [] # list of points
n = 0 # count variable
sumX = 0
sumY = 0
while True:
p = win.getMouse()
p.draw(win)
# if user clicks …Run Code Online (Sandbox Code Playgroud) 我想制作一个简单的程序来提高我对这类编程的了解.我发现了一个非常有用的库,pyeasyGA,并且我尝试使用graphics.py创建一个简单的程序,从随机生成的"pass"序列创建一个收敛到一个点的序列.
这就是它的工作原理:
def create_individual(data):
a = [(randint(0,5),randint(0,5)) for n in range(len(data))]
print(a)
return a
Run Code Online (Sandbox Code Playgroud)
此函数创建一系列传递,因为graphics.py库允许您通过为对象移动它想要移动它来移动对象.那是我的"个人".
为了计算健身,我使用了这个:
def fitness(individual, data):
totX=0
totY=0
for elem in individual:
totX+=elem[0]
totY+=elem[1]
tot = (totX,totY)
return distEuclidea(arrivo, tot)
def distEuclidea(p1,p2):
x1 = p1[0]
y1 = p1[1]
x2 = p2[0]
y2 = p2[1]
return ((x2-x1)**2+(y2-y1)**2)**(1/2)
Run Code Online (Sandbox Code Playgroud)
此功能计算距所需到达点的距离.
在这些过程之后,程序会产生很多代,并且会使个体具有最低的适应度,但它不起作用.
它没有发展.每个传递序列似乎都是随机生成的.
有谁可以帮助我吗?
编辑:
该计划似乎有效.唯一的问题是几代人.