【问题标题】:why I can't do if d < 25 :? (SOLVED)如果 d < 25 为什么我不能:? (解决了)
【发布时间】:2020-01-07 12:30:05
【问题描述】:

我只是在输入书中的代码,但是这个代码不起作用

那本书说这很正常,但我没有工作

这是我的代码

import turtle as t
import random
#t.bgcolor("black")

def turn_up():
    t.left(2)
def turn_down():
    t.right(2)
def fire():
    ang = t.heading
    while t.ycor > 0:
        t.fd(15)
        t.rt(5)

d = t.distance(target,0)
t.sety(random.randint(0,100)
(sety)

if d < 25 :
     t.color("green")
     t.write("Awsome!",False,"center",("",10))
else:
    t.color("red")
    t.write("Miss",False,"center",("",10))
    t.color("black")
    t.goto(-200,10)
    t.setheading(ang)


t.up()
t.goto(-300,0)
t.down()
t.goto(300,0)

target = random.randint(50,150)
t.pensize(3)
t.color("green")
t.up()
t.goto(target - 25,2)
t.down()
t.goto(target + 25,2)

t.color("black")
t.pensize(2)
t.up()
t.goto(-200,10)
t.setheading(20)

t.onkeypress(turn_up,"Up")
t.onkeypress(turn_down,"Down")
t.onkeypress(fire,"space")

t.listen

我收到此错误:

  File "main.py", line 19
    if d < 25 :
              ^
SyntaxError: invalid syntax

我只是想要here 的海龟炮游戏,但没有成功!

你能告诉我为什么会发生这个错误吗?

【问题讨论】:

  • 在链接代码中,if 在函数内部。你的不是。您在此处发布的代码会比 if 更早中断,因为未定义 target
  • @h4z3 不,首先出现语法错误。
  • @StefanPochmann 好吧,OP 没有说明确切的问题是什么,所以我不想假设它是语法错误。但你是对的。我怀疑这可能是if 内部的轻微过度缩进。
  • @h4z3 不,: 需要类似于 else,以便继续前面三行开始的持续表达式。
  • d 不是整数类型。不是吗?

标签: python turtle-graphics


【解决方案1】:

具体的复制错误:缺少括号:

<     ang = t.heading
---
>     ang = t.heading()

同上:

<   while t.ycor > 0:
---
>   while t.ycor() > 0:

缺少括号和垃圾行:

< t.sety(random.randint(0,100)
< (sety)
---
> t.sety(random.randint(0, 100))

拼写错误:

<   t.write("Awsome!",False,"center",("",10))
---
>   t.write("Awesome!", False, "center", ("", 10))

缺少括号和可能缺少最终语句:

< t.listen
---
> t.listen()
> t.mainloop()

具有可行缩进的工作代码:

import turtle as t
import random

def turn_up():
    t.left(2)

def turn_down():
    t.right(2)

def fire():
    ang = t.heading()

    while t.ycor() > 0:
        t.fd(15)
        t.rt(5)

    d = t.distance(target, 0)
    t.sety(random.randint(0, 100))

    if d < 25:
        t.color("green")
        t.write("Awesome!", False, "center", ("", 10))
    else:
        t.color("red")
        t.write("Miss", False, "center", ("", 10))
        t.color("black")
        t.goto(-200, 10)
        t.setheading(ang)

t.up()
t.goto(-300, 0)
t.down()
t.goto(300, 0)

target = random.randint(50, 150)
t.pensize(3)
t.color("green")
t.up()
t.goto(target - 25, 2)
t.down()
t.goto(target + 25, 2)

t.color("black")
t.pensize(2)
t.up()
t.goto(-200, 10)
t.setheading(20)

t.onkeypress(turn_up, "Up")
t.onkeypress(turn_down, "Down")
t.onkeypress(fire, "space")

t.listen()
t.mainloop()

我可能会如何写这个例子:

from turtle import Screen, Turtle
from random import randrange

def turn_up():
    turtle.left(2)

def turn_down():
    turtle.right(2)

def fire():
    angle = turtle.heading()

    while turtle.ycor() > 2:
        turtle.forward(15)
        turtle.right(5)

    distance = turtle.distance(target, 2)
    turtle.sety(randrange(100))

    if distance < 25:
        turtle.color('green')
        turtle.write("Awesome!", align='center', font=('', 10))
        turtle.setheading(20)
    else:
        turtle.color('red')
        turtle.write("Miss", align='center', font=('', 10))
        turtle.setheading(angle)

    turtle.color('black')
    turtle.goto(-200, 10)

turtle = Turtle()

turtle.penup()
turtle.setx(-300)
turtle.pendown()
turtle.setx(300)

target = randrange(50, 150)

turtle.pensize(3)
turtle.color('green')
turtle.penup()
turtle.goto(target - 25, 2)
turtle.pendown()
turtle.goto(target + 25, 2)

turtle.color('black')
turtle.pensize(2)
turtle.penup()
turtle.goto(-200, 10)
turtle.setheading(20)

screen = Screen()

screen.onkeypress(turn_up, 'Up')
screen.onkeypress(turn_down, 'Down')
screen.onkeypress(fire, 'space')

screen.listen()
screen.mainloop()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-28
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    • 2014-12-11
    • 2012-02-01
    • 2015-02-28
    相关资源
    最近更新 更多