python - 我的海龟代码有什么问题?不能理解
问题描述
我在做一个关于像素艺术的学校项目,想创造一个风景。怎么了?
""" Landscape Drawer.py
Draws landscape on a turtle screen"""
import turtle as t
import random as r
pen = t.Pen()
pen.hideturtle()
pen.speed('fastest')
pixelno = 90000
def controls():
if pen.xcor() == 150 or pen.xcor() == 150 or pen.ycor() == 150 or pen.ycor() == 150:
pen.right(90)
pen.forward(1)
pen.right(90)
def allcode():
while True:
t.colormode(255)
controls()
if pen.ycor() < -75:
rX = r.randint(0, 150)
gX = r.randint(0, 255)
bX = r.randint(0, 150)
pen.pencolor(rX, gX, bX)
pen.pendown()
pen.penup()
pen.forward(1)
elif pen.ycor() > -150 or pen.ycor < 150:
cloud = r.randint(1, 7)
if cloud == 7:
pen.pencolor(255, 255, 255)
t.pendown()
rY = r.randint(0, 150)
gY = r.randint(0, 150)
bY = r.randint(0, 255)
pen.pencolor(rY, gY, bY)
pen.pendown()
pen.penup()
pen.forward(1)
else:
print('Your landscape, look nice? ')
pen.penup()
pen.goto(-300, -300)
allcode()
pen.exitonclick()
PS我正在使用Python 3.8.2。
没有错误,但是乌龟屏幕是完全空白的。
我实际上已经尝试删除pen.hideturtle()
,pen.speed('fastest')
但它仍然无法正常工作。
谢谢你的帮助!
解决方案
您的代码充满了错误:
pen.pencolor(255, 255, 255)
t.pendown()
在这里,您正在与两只不同的海龟交谈,您的海龟和您以前从未接触过pen
的默认海龟。这里发生了什么:
pen.xcor() == 150 or pen.xcor() == 150
是否缺少减号?同上pen.ycor()
。这些语句的顺序错误:
pen.pendown()
pen.penup()
pen.forward(1)
要在您想要的屏幕上实际做一个标记:
pen.pendown()
pen.forward(1)
pen.penup()
在代码中的两个位置查找该错误。这个逻辑:
if cloud == 7:
pen.pencolor(255, 255, 255)
接下来的内容完全取消了:
rY = r.randint(0, 150)
gY = r.randint(0, 150)
bY = r.randint(0, 255)
pen.pencolor(rY, gY, bY)
你在else
那里缺少一个子句。在本else
条款中:
else:
print('Your landscape, look nice? ')
您可能还需要一个break
声明,否则您将永远无法摆脱无限while True:
循环。
以下是我对您的代码的修改以解决上述问题,但我没有声称它有任何有用的功能:
"""
Landscape Drawer.py
Draws landscape on a turtle screen
"""
from turtle import Screen, Pen
from random import randint
def controls():
if pen.xcor() == -150 or pen.xcor() == 150 or pen.ycor() == -150 or pen.ycor() == 150:
pen.right(90)
pen.forward(1)
pen.right(90)
def allcode():
while True:
controls()
if pen.ycor() < -75:
r = randint(0, 150)
g = randint(0, 255)
b = randint(0, 150)
pen.pencolor(r, g, b)
pen.pendown()
pen.forward(1)
pen.penup()
elif pen.ycor() > -150 or pen.ycor() < 150:
cloud = randint(1, 7)
if cloud == 7:
pen.pencolor(255, 255, 255)
else:
r = randint(0, 150)
g = randint(0, 150)
b = randint(0, 255)
pen.pencolor(r, g, b)
pen.pendown()
pen.forward(1)
pen.penup()
else:
print('Your landscape, look nice? ')
break
screen = Screen()
screen.colormode(255)
pen = Pen()
pen.hideturtle()
pen.speed('fastest')
pen.penup()
pen.goto(-300, -300)
allcode()
screen.exitonclick()
推荐阅读
- javascript - jQuery .val() 不返回选项标签的值
- java - 在android中的多个本地通知中设置操作,为广播接收器中的通知提供相同的ID
- python - 如何修复 TypeError:“NoneType”对象在 Python 中不可迭代?
- kubernetes - 将大使部署到 Kubernetes
- json - 使用 Struct 解码 JSON 响应的 Alamofire 错误
- google-cloud-dataproc - Dataproc 集群的数据融合配置失败
- python - 比较行时如何绘制条形图?
- python - 提取字节文本文件中两个字符之间的字符串,Python
- java - Flyway、Spring Boot 和应用程序在没有数据库的情况下启动
- android - 如何在 RecyclerView SelectionTracker 中禁用拖动以进行选择?