一旦变量在Python中的while循环内达到某个阈值,就执行一个函数

时间:2014-04-29 18:18:51

标签: python function loops

目前,我说我有一个变量score,每1秒连续添加一次。每当分数达到10的倍数(20,30,40,10等)时,语句在while循环内部执行一次到另一个变量的减号。例如:

def levelUp(score):
    if score % 10 ==0 and score != 0:
      height -= 2
    return height

此函数在另一个循环中调用:

while True: 
  levelUp(score)

目的是让功能检查分数是否可以除以2,如果是,则减去高度。该函数不能在while True:循环之外调用,因为它本身就是添加到score变量的函数。有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:1)

所以看起来height是一个在程序中其他地方定义的变量,我想你想要的东西如下:

def levelUp(score, height):
    if score % 10 == 0 and score != 0:
        height -= 2
    return height

然后当您致电levelUp时,请使用以下内容:

height = levelUp(score, height)

尝试从函数中修改外部变量可能会让Python变得有点棘手,最好避免使用该模式。有关此类问题的其他信息,请参阅此问题和最佳答案:
local var referenced before assignment

答案 1 :(得分:0)

您可以将while和函数合并为一个:

score = 0
height = 100
while True:
    if score % 10 == 0 and score!= 0:
        height -= 2
    score+=1

或者,您可以对您的功能执行以下操作:

def levelUp(score, height):
    if score % 10 == 0 and score!= 0:
        height -= 2
    return height

score = 0
height = 100
while True:
    height = levelUp(score, height)
    score+=1