如何用 python 3 乌龟绘制 "square" 点而不是 "round" 点?
How to draw "square" dots instead of "round" dots with python 3 turtle?
我有这个脚本:
import turtle
from math import sqrt
def isPrime(n):
if n < 2: return False
if n == 2: return True
if n % 2 == 0: return False
k = 3
while k < sqrt(n):
if n % k == 0:
return False
k += 2
return True
def plot(k):
numPrimes = 0
turtle.pu()
turtle.speed(0)
turtle.pencolor("green")
turtle.dot(5)
n= 1
dir = 1
for i in range(80):
for j in range(n):
turtle.setx(turtle.xcor() + 7*dir)
if isPrime(k):
numPrimes += 1
turtle.pencolor("red")
else:
turtle.pencolor("black")
turtle.dot(5)
k += 1
for j in range(n):
turtle.sety(turtle.ycor() + 7*dir)
if isPrime(k):
turtle.pencolor("red")
numPrimes += 1
else:
turtle.pencolor("black")
turtle.dot(5)
k += 1
n += 1
dir = -dir
print(k-1, numPrimes)
turtle.hideturtle()
plot(1)
它将在窗格上绘制圆点,但我想绘制相互接触的“方形”点(邮票?),因此点之间没有白色 space,并且点本身是不是圆的,是方的。
基本上它应该看起来像一个巨大的棋盘,而不是一个“带点的方格”
这是它现在生产的
我要这个
(不要介意最后一张素数和非素数屏幕截图中的不准确性,这只是为了形象化我所说的“没有白色的方点 space”
的意思
我将如何实现这一目标?
turtle 中似乎没有 dot() 生成方形图章而不是圆形点。
我搜索了 turtle 文档,但没有找到任何可以使点平方的东西。
但是,有一个方法叫做 .stamp()
,它将海龟形状复制到当前海龟位置的 canvas 上。
所以,我给你的建议是:
- 通过
turtle.shape("square")
; 将乌龟做成方形
- 使用
turtle.turtlesize()
和 stretch_wid=
和 stretch_len=
参数调整大小,直到您满意为止;
- 使用
turtle.stamp()
代替turtle.dot()
在你的情况下,我还添加了一个海龟大小常量,将 .pencolor()
更改为 .color()
此处测试代码:
import turtle
from math import sqrt
SIZE_OF_TURTLE_COEFFICIENT = 0.255
def isPrime(n):
if n < 2: return False
if n == 2: return True
if n % 2 == 0: return False
k = 3
while k < sqrt(n):
if n % k == 0:
return False
k += 2
return True
def plot(k):
numPrimes = 0
turtle.pu()
turtle.speed(0)
turtle.color("green")
turtle.shape('square') # <-- added code starts here
turtle.turtlesize(stretch_wid=SIZE_OF_TURTLE_COEFFICIENT, stretch_len=SIZE_OF_TURTLE_COEFFICIENT)
turtle.stamp()
n= 1
dir = 1
for i in range(80):
for j in range(n):
turtle.setx(turtle.xcor() + 7*dir)
if isPrime(k):
numPrimes += 1
turtle.color("red")
else:
turtle.color("black")
turtle.stamp()
k += 1
for j in range(n):
turtle.sety(turtle.ycor() + 7*dir)
if isPrime(k):
turtle.color("red")
numPrimes += 1
else:
turtle.color("black")
turtle.stamp()
k += 1
n += 1
dir = -dir
print(k-1, numPrimes)
turtle.hideturtle()
plot(1)
我有这个脚本:
import turtle
from math import sqrt
def isPrime(n):
if n < 2: return False
if n == 2: return True
if n % 2 == 0: return False
k = 3
while k < sqrt(n):
if n % k == 0:
return False
k += 2
return True
def plot(k):
numPrimes = 0
turtle.pu()
turtle.speed(0)
turtle.pencolor("green")
turtle.dot(5)
n= 1
dir = 1
for i in range(80):
for j in range(n):
turtle.setx(turtle.xcor() + 7*dir)
if isPrime(k):
numPrimes += 1
turtle.pencolor("red")
else:
turtle.pencolor("black")
turtle.dot(5)
k += 1
for j in range(n):
turtle.sety(turtle.ycor() + 7*dir)
if isPrime(k):
turtle.pencolor("red")
numPrimes += 1
else:
turtle.pencolor("black")
turtle.dot(5)
k += 1
n += 1
dir = -dir
print(k-1, numPrimes)
turtle.hideturtle()
plot(1)
它将在窗格上绘制圆点,但我想绘制相互接触的“方形”点(邮票?),因此点之间没有白色 space,并且点本身是不是圆的,是方的。
基本上它应该看起来像一个巨大的棋盘,而不是一个“带点的方格”
这是它现在生产的
我要这个
我将如何实现这一目标? turtle 中似乎没有 dot() 生成方形图章而不是圆形点。
我搜索了 turtle 文档,但没有找到任何可以使点平方的东西。
但是,有一个方法叫做 .stamp()
,它将海龟形状复制到当前海龟位置的 canvas 上。
所以,我给你的建议是:
- 通过
turtle.shape("square")
; 将乌龟做成方形
- 使用
turtle.turtlesize()
和stretch_wid=
和stretch_len=
参数调整大小,直到您满意为止; - 使用
turtle.stamp()
代替turtle.dot()
在你的情况下,我还添加了一个海龟大小常量,将 .pencolor()
更改为 .color()
此处测试代码:
import turtle
from math import sqrt
SIZE_OF_TURTLE_COEFFICIENT = 0.255
def isPrime(n):
if n < 2: return False
if n == 2: return True
if n % 2 == 0: return False
k = 3
while k < sqrt(n):
if n % k == 0:
return False
k += 2
return True
def plot(k):
numPrimes = 0
turtle.pu()
turtle.speed(0)
turtle.color("green")
turtle.shape('square') # <-- added code starts here
turtle.turtlesize(stretch_wid=SIZE_OF_TURTLE_COEFFICIENT, stretch_len=SIZE_OF_TURTLE_COEFFICIENT)
turtle.stamp()
n= 1
dir = 1
for i in range(80):
for j in range(n):
turtle.setx(turtle.xcor() + 7*dir)
if isPrime(k):
numPrimes += 1
turtle.color("red")
else:
turtle.color("black")
turtle.stamp()
k += 1
for j in range(n):
turtle.sety(turtle.ycor() + 7*dir)
if isPrime(k):
turtle.color("red")
numPrimes += 1
else:
turtle.color("black")
turtle.stamp()
k += 1
n += 1
dir = -dir
print(k-1, numPrimes)
turtle.hideturtle()
plot(1)