You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python乒乓球游戏报错:TypeError: unsupported operand type(s) for +=: 'method' and 'int'

解决Python Turtle乒乓球游戏中TypeError: unsupported operand type(s) for +=: 'method' and 'int'错误

错误原因

你的代码里,paddle_a_up函数中的y = paddle_a.ycor只是把turtle.Turtle对象的ycor方法本身赋值给了变量y,并没有调用这个方法获取当前的y坐标数值。后续对方法对象执行y += 20操作,自然会触发类型不匹配的错误。

修正方案

把y = paddle_a.ycor改成y = paddle_a.ycor(),通过调用方法拿到当前的y坐标数值,再进行加减运算就正常了。

修正后的完整代码

import turtle

wn = turtle.Screen()
wn.title("Ping Pong By @TheMayoKing")
wn.bgcolor("black")
wn.setup(width=800, height=600)
wn.tracer(0)

#Paddle A
paddle_a = turtle.Turtle()
paddle_a.speed(0)
paddle_a.shape("square")
paddle_a.shapesize(stretch_wid=5, stretch_len=1)
paddle_a.color("white")
paddle_a.penup()
paddle_a.goto(-350, 0)

#Paddle B
paddle_b = turtle.Turtle()
paddle_b.speed(0)
paddle_b.shape("square")
paddle_b.shapesize(stretch_wid=5, stretch_len=1)
paddle_b.color("white")
paddle_b.penup()
paddle_b.goto(+350, 0)

#Ball
ball = turtle.Turtle()
ball.speed(0)
ball.shape("square")
ball.color("white")
ball.penup()
ball.goto(0, 0)

#function
def paddle_a_up():
    # 修正:调用ycor()方法获取当前y坐标值
    y = paddle_a.ycor()
    y += 20
    paddle_a.sety(y)

#KeyboardBinding
wn.listen()
wn.onkeypress(paddle_a_up, "w")

#MainGameLoop
while True:
    wn.update()

你还可以补充实现 paddle A 的下移功能,示例代码如下:

def paddle_a_down():
    y = paddle_a.ycor()
    y -= 20
    paddle_a.sety(y)

# 绑定s键实现下移
wn.onkeypress(paddle_a_down, "s")

内容的提问来源于stack exchange,提问作者Mayo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 14:50:31