我试图在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,有人可以帮忙吗?
答案 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)