Python 变量值不更新
所以基本上,我在为乒乓球比赛建立计分系统。全局变量s_a为0,并应在球弹起后更改Python 变量值不更新,python,python-3.x,Python,Python 3.x,所以基本上,我在为乒乓球比赛建立计分系统。全局变量s_a为0,并应在球弹起后更改 import turtle import time win = turtle.Screen() win.title("Pong") win.bgcolor("black") win.setup(width=800, height=600) win.tracer(0) ball = turtle.Turtle() ball.speed(0) ball.shape("square") ball.color("whi
import turtle
import time
win = turtle.Screen()
win.title("Pong")
win.bgcolor("black")
win.setup(width=800, height=600)
win.tracer(0)
ball = turtle.Turtle()
ball.speed(0)
ball.shape("square")
ball.color("white")
ball.penup()
ball.goto(0, 0)
ball.dx = 2
s_a = 0
s_s = turtle.Turtle()
s_s.speed(0)
s_s.hideturtle()
s_s.goto(0, 0)
s_s.penup()
s_s.color("white")
current_score = "Player A: {} | Player B: 0".format(s_a)
s_s.write(current_score, align="center", font=("Courier", 16, "normal"))
while True:
win.update()
time.sleep( 1 / 60 )
ball.setx(ball.xcor() + ball.dx)
if ball.xcor() > 380:
s_a += 1
ball.goto(0,0)
球会自动复位,并像预期的那样改变方向,但变量不会更新。我遗漏了什么吗?是的,请在更新值之前写入全局,
如
global s\u a
是,请在更新值之前写入global,
像
global s_a
尝试清除屏幕然后写入,您不需要全局变量,它们通常是个坏主意:
while True:
win.update()
time.sleep(1/60)
ball.setx(ball.xcor() + ball.dx)
if ball.xcor() > 380:
s_a += 1
current_score = "Player A: {} | Player B: 0".format(s_a)
s_s.clear()
s_s.write(current_score, align="center", font=("Courier", 16, "normal"))
ball.goto(0, 0)
尝试清除屏幕,然后写入,您不需要全局变量,它们通常是个坏主意:
while True:
win.update()
time.sleep(1/60)
ball.setx(ball.xcor() + ball.dx)
if ball.xcor() > 380:
s_a += 1
current_score = "Player A: {} | Player B: 0".format(s_a)
s_s.clear()
s_s.write(current_score, align="center", font=("Courier", 16, "normal"))
ball.goto(0, 0)
你的代码没问题。你应该在屏幕上重新打印分数。我是说加上
current_score=“玩家A:{}|玩家B:0”。格式(s_A)
s_.s.clear()
s_s.write(当前分数,align=“center”,font=(“Courier”,16,“normal”))
在最后一行之前更新
s\u a
。您的代码正常。你应该在屏幕上重新打印分数。我是说加上
current_score=“玩家A:{}|玩家B:0”。格式(s_A)
s_.s.clear()
s_s.write(当前分数,align=“center”,font=(“Courier”,16,“normal”))
在最后一行之前更新
sua
。这是否回答了您的问题?如果没有,也许你的程序中有某种逻辑错误,很难说,因为你没有包含所有相关的代码。这段代码看起来很好。你需要提供一个新的解决方案。也许您的主循环运行在不同的范围内?也许更好的问题是-您如何知道,s_a
没有更新?你不在循环中打印它吗?你到底在哪里验证它仍然是0
?这是否回答了你的问题?如果没有,也许你的程序中有某种逻辑错误,很难说,因为你没有包含所有相关的代码。这段代码看起来很好。你需要提供一个新的解决方案。也许您的主循环运行在不同的范围内?也许更好的问题是-您如何知道,s_a
没有更新?你不在循环中打印它吗?您究竟在哪里验证它仍然是0
?程序现在无法运行。我曾经尝试过global s_a
s_a+=1
,但仍然失败。有什么建议吗?程序现在无法运行。我曾经尝试过global s_a
s_a+=1
,但仍然失败。有什么建议吗?