Python计数器永远不会超过2

时间:2016-04-25 17:22:45

标签: python

我试图在Python 3中运行while循环,直到计数器超过10

#Set variable
option_current = 1

def myfunction(option_current):
    option_current = option_current + 1
    print ( option_current )

while ( option_current < 10 ):
    myfunction(option_current)

我的计数器永远不会超过2,有人可以帮忙吗?

3 个答案:

答案 0 :(得分:4)

您通过option_current定义为1,每次调用您的功能时,您只需打印option_current += 1即2,它不会更新你认为它的方式。它们位于不同的命名空间中。 option_current = option_current + 1在该函数的名称空间内,而option_current在其外部是全局的。因此,你在该函数内部的print语句和增量只是连续打印并且对本地&#34;本地&#34;该函数中的option_current并且不修改全局变量。如果这是有道理的。

使用我不推荐的global

option_current = 1

def myfunction():
    global option_current
    option_current = option_current + 1
    print ( option_current )
while ( option_current < 10 ):
    myfunction()

没有全局的一种方法

def myfunction(current):
    current += 1
    print(current)
    return current

current = 1
while ( current < 10 ):
    current = myfunction(current)

虽然,如果这是你的所有功能....

current = 1
while current < 10:
    print(current)
    current += 1

答案 1 :(得分:0)

我相信你想要全球的&#39;选项并删除函数的参数:

#Set variable
option_current = 1

def myfunction():
    global option_current
    option_current = option_current + 1
    print ( option_current )

while ( option_current < 10 ):
    myfunction()

输出:

2
3
4
5
6
7
8
9
10

答案 2 :(得分:0)

每个人都在暗示global,尽管这是一种非常糟糕的风格。

您应该在循环内计算变量,因此您的代码可能如下所示:

option_current = 1


def myfunction(option_current):
    print(option_current)

while option_current < 10:
    myfunction(option_current)
    option_current += 1

但这可以更好地解决:

def myfunction(option_current):
    print(option_current)

for option_current in range(1, 10):
    myfunction(option_current)