一、参考代码
# ------------------------------------------------------------------------
# coding=utf-8
# ------------------------------------------------------------------------
#
# Created by Martin J. Laubach on 2011-11-15
#
# ------------------------------------------------------------------------
import math
import turtle
import random
turtle.tracer(50000, delay=0)
turtle.register_shape("dot", ((-3,-3), (-3,3), (3,3), (3,-3)))
turtle.register_shape("tri", ((-3, -2), (0, 3), (3, -2), (0, 0)))
turtle.speed(0)
turtle.title("Poor robbie is lost")
UPDATE_EVERY = 0
DRAW_EVERY = 2
class Maze(object):
def __init__(self, maze):
self.maze = maze
self.width = len(maze[0])
self.height = len(maze)
turtle.setworldcoordinates(0, 0, self.width, self.height)
self.blocks = []
self.update_cnt = 0
self.one_px = float(turtle.window_width()) / float(self.width) / 2
self.beacons = []
for y, line in enumerate(self.maze):
for x, block in enumerate(line):
if block:
nb_y = self.height - y - 1
self.blocks.append((x, nb_y))
if block == 2:
self.beacons.extend(((x, nb_y), (x+1, nb_y), (x, nb_y+1), (x+1, nb_y+1)))
def draw(self):
for x, y in self.blocks:
turtle.up()
turtle.setposition(x, y)
turtle.down()
turtle.setheading(90)
turtle.begin_fill()
for _ in range(0, 4):
turtle.fd(1)
turtle.right(90)
turtle.end_fill()
turtle.up()
turtle.color("#00ffff")
for x, y in self.beacons:
turtle.setposition(x, y)
turtle.dot()
turtle.update()
def weight_to_color(self, weight):
return "#%02x00%02x" % (int(weight * 255), int((1 - weight) * 255))
def is_in(self, x, y):
if x < 0 or y < 0 or x > self.width or y > self.height:
return False
return True
def is_free(self, x, y):
if not self.is_in(x, y):
return False
yy = self.height - int(y) - 1
xx = int(x)
return self.maze[yy][xx] == 0
def show_mean(self, x, y, confident=False):
if confident:
turtle.color("#00AA00")
else:
turtle.color("#cccccc")
turtle.setposition(x, y)
turtle.shape("circle")
turtle.stamp()
def show_particles(self, particles):
self.update_cnt += 1
if UPDATE_EVERY > 0 and self.update_cnt % UPDATE_EVERY != 1:
return
turtle.clearstamps()
turtle.shape('tri')
draw_cnt = 0
px = {}
for p in particles:
draw_cnt += 1
if DRAW_EVERY == 0 or draw_cnt % DRAW_EVERY == 1:
# Keep track of which positions already have something
# drawn to speed up display rendering
scaled_x = int(p.x * self.one_px)
scaled_y = int(p.y * self.one_px)
scaled_xy = scaled_x * 10000 + scaled_y
if not scaled_xy in px:
px[scaled_xy] = 1
turtle.setposition(*p.xy)
turtle.setheading(90 - p.h)
turtle.color(self.weight_to_color(p.w))
turtle.stamp()
def show_robot(self, robot):
turtle.color("green")
turtle.shape('turtle')
turtle.setposition(*robot.xy)
turtle.setheading(90 - robot.h)
turtle.stamp()
turtle.update()
def random_place(self):
x = random.uniform(0, self.width)
y = random.uniform(0, self.height)
return x, y
def random_free_place(self):
while True:
x, y = self.random_place()
if self.is_free(x, y):
return x, y
def distance(self, x1, y1, x2, y2):
return math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2)
def distance_to_nearest_beacon(self, x, y):
d = 99999
for c_x, c_y in self.beacons:
distance = self.distance(c_x, c_y, x, y)
if distance < d:
d = distance
d_x, d_y = c_x, c_y
return d
2.https://blog.csdn.net/weixin_34279579/article/details/94562301
1. https://www.jb51.net/article/201041.htm
二、安装scipy
如果代码运行过程报错,显示
import scipy.stats 有错误,但是又安装了scipy , 则可能是scipy的版本太低,换成1.6版本。(低版本的文件大小明显小的很多,才十几M,而1.6版本则32M多,所以可能是很多子文件未包括在内)
安装方法同下。
参考:https://blog.csdn.net/gaoyu18/article/details/105086277
三、第三方库安装 statsmodels
第一种方式:电脑中dos命令行模式下 直接 pip install statsmodels即可成功完成, 如果安装一半报错结束,则进入第二种方法。
第二种方式:
pypi官网是很多第三方库文件的汇总网站,很多库可以在上面找到。 注意自己的Python版本,电脑操作系统版本等再下载。
网址:https://pypi.org/project/statsmodels/#files
下载完文件,放入自己电脑的Python安装目录下的 目录中E:\Python\Python38\Lib\site-packages 参考自己电脑的安装目录。
cmd进入dos界面,进入到E:\Python\Python38\Lib\site-packages目录执行命令pip install statsmodels-0.12.2-cp38-cp38-none-win_amd64.whl安装成功后退出