Python:为什么数学运算符赢了';不行?

Python:为什么数学运算符赢了';不行?,python,if-statement,turtle-graphics,Python,If Statement,Turtle Graphics,我一直在遵循一个教程,向初学者展示如何制作一个“太空入侵者”游戏。我主要只是想找到一种玩海龟图案之类的东西的方法。一切都进行得很顺利,直到我注意到我定义move_left函数的if语句不起作用。然而,问题不在于if语句本身。我尝试在它下面做的任何数学运算都会被程序完全忽略,没有错误消息或任何东西。我甚至试图在if语句下打印语句,只是为了看实际语句是否符合要求,并看到语句确实按照我的计划打印。那么是什么原因呢?为什么我不能在这两个函数下做任何数学方程或类似的事情 下面是我遵循的代码: import

我一直在遵循一个教程,向初学者展示如何制作一个“太空入侵者”游戏。我主要只是想找到一种玩海龟图案之类的东西的方法。一切都进行得很顺利,直到我注意到我定义move_left函数的if语句不起作用。然而,问题不在于if语句本身。我尝试在它下面做的任何数学运算都会被程序完全忽略,没有错误消息或任何东西。我甚至试图在if语句下打印语句,只是为了看实际语句是否符合要求,并看到语句确实按照我的计划打印。那么是什么原因呢?为什么我不能在这两个函数下做任何数学方程或类似的事情

下面是我遵循的代码:

import turtle
import os

def main():
    #Set up the screen

    wn = turtle.Screen()
    wn.bgcolor("black")
    wn.title("Space Invaders")

    #Draw Border
    border_pen = turtle.Turtle()
    border_pen.speed(0)
    border_pen.color("white")
    border_pen.penup()
    border_pen.setposition(-300, -300)
    border_pen.pendown()
    border_pen.pensize(3)

    for side in range (4):
        border_pen.fd(600)
        border_pen.lt(90)
    border_pen.hideturtle()

    #create the player turtle

    player = turtle.Turtle()
    player.color("blue")
    player.shape('triangle')
    player.penup()
    player.speed(0)
    player.setposition(0, -250)
    player.setheading(90)


    #Player controls

    playerspeed = 15

    def move_left():
        x = player.xcor()
        x -= playerspeed
        player.setx(x)
        print(x)
        if x < -280:
            print("Reached") #It is here I tested rather or not the if statement 
                             #above works, which it does
            x = -280 #The following code here will not take effect. I tried all
                     #of different signs to use. Nothing happens. Not even an 
                     #error

    def move_right(): #I did not put the if statement here since I noticed the
                      #problem with the left side first
        x = player.xcor()
        x += playerspeed
        player.setx(x)
        if x > 280:
            x = 280

    turtle.listen()
    turtle.onkey(move_left, "Left")
    turtle.onkey(move_right, "Right")

    turtle.mainloop()

main()
导入海龟
导入操作系统
def main():
#设置屏幕
wn=tutle.Screen()
wn.bgcolor(“黑色”)
wn.标题(“太空入侵者”)
#划界
border\u pen=海龟。海龟()
边界笔速度(0)
边框颜色(“白色”)
border_pen.penup()
边界笔设置位置(-300,-300)
border_pen.pendown()
边境养老金(3)
对于范围内的侧面(4):
border_pen.fd(600)
边界_pen.lt(90)
边界_pen.hideturtle()
#创建玩家乌龟
玩家=乌龟。乌龟()
播放器颜色(“蓝色”)
player.shape('三角形')
player.penup()
玩家速度(0)
玩家设置位置(0,-250)
玩家设置标题(90)
#玩家控制
球员速度=15
def向左移动()
x=player.xcor()
x-=玩家速度
player.setx(x)
打印(x)
如果x<-280:
打印(“到达”)#我在这里测试了if语句,而不是if语句
#上面的工作,确实如此
x=-280#以下代码将不生效。我都试过了
#使用不同的标志。什么也没发生。连一个都没有
#错误
def move_right():#我没有把if语句放在这里,因为我注意到
#首先是左侧的问题
x=player.xcor()
x+=玩家速度
player.setx(x)
如果x>280:
x=280
乌龟,听着
乌龟。上键(向左移动,“左”)
乌龟.安基(向右移动,“向右”)
tutle.mainloop()
main()

代码没有影响的原因是您修改了
x
的值,该值是函数范围的局部变量,而不是播放器位置。在更新局部变量
x
后,调用
player.setx(x)
实际更新播放器位置。如果要绑定位置,还可以使用内置的
min
/
max
方法:

   def move_left():
        x = player.xcor()
        x -= playerspeed
        player.setx(max(x, -280))

    def move_right():
        x = player.xcor()
        x += playerspeed
        player.setx(min(x, 280))

将x设置为-280后,您忘记调用
player.setx(x)
。欢迎使用StackOverflow。请按照您创建此帐户时的建议,阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。除此之外,(1)您没有向我们展示不正确的输出;(2) 如果你的问题只是数学运算,为什么所有的
代码都在这里?