Python更改变量的值

2024-06-06 20:41:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为一场音乐会运行一个模拟,在这个模拟中,我生成每个歌迷在做其他事情(买食物、饮料或上厕所)之前在舞台前花费的时间量。然而,我为他们设定的时间不是倒计时的时间,直到他们离开去做别的事情。你知道吗

在倒计时时,我收到一个错误,说我不能将操作数+=用于NoneType和int,在更改了stay的分配方式之后,我意识到许多停留时间都被更改了。你知道吗

Fan类代码

class Fan:
    stay = 0
    def __init__(self, gender):
        self.gender = gender

这段代码创建一个风扇,计算它们在舞台前停留的时间,并将它们添加到舞台前部区域

   for i in range(200):
       x = random.randint(1,10)
       if x <= 7:
           f = Fan("f")
           f.stay = stage.calcstay()
           stage.addfan(f)
           print(i,": ",f.stay)
       else:
           f = Fan("m")
           f.stay = stage.calcstay()
           stage.addfan(f)
           print(i,": ",f.stay)

这是功能倒计时的时候,球迷留在舞台前。(字面意思是下一位代码)

for x in range(360):
    stagefunction()

这是stagefunction()方法:

def stagefunction():
    if len(stage.fans) > 0:
        for i in range(len(stage.fans)):
            print(i,": ",stage.fans[i].stay)
            stage.fans[i].stay += -1
            if  stage.fans[i].stay <= 0:
                movefromstage(i)
            stage.TTS += 1
    return

我预计stagefunction()每次都会被多次调用,从而减少剩余的时间,直到舞台前部区域的每个风扇都减少1,并移除那些不应该再呆下去的风扇。然而,我甚至一次也不能通过stagefunction(),因为停留时间会发生变化,通常在19世纪初,a值会变为NoneType


Tags: 代码inforif时间rangegenderstage
1条回答
网友
1楼 · 发布于 2024-06-06 20:41:52

stayclass variable,不是instance variable。这意味着stay的值对类的所有实例都是通用的,如果要更改它,必须从类而不是实例中更改它。你知道吗

要定义instance variable,请将其放入__init__()函数中

相关问题 更多 >