i = 1
def printM(n):
while i <= 6:
print n*i, '\t',
i = i + 1
print
while i <= 6:
printM(i)
i = i + 1
结果是错误,表示在分配前引用i
!有什么问题的线索?
答案 0 :(得分:0)
i
函数中的printM
是该函数的本地函数。如果您指的是全局i
,则应该声明:
def printM(n):
global i
...
请注意,在函数中使用全局状态不是可维护的模式;将它添加为参数会更好:
def printM(i, n):
...
答案 1 :(得分:0)
您需要注意变量本地化。通常在函数/方法中,最好不要使用全局变量。更好的方法是在函数/方法
中使用它作为局部变量的参数代码示例:
def printM(n):
i = 0
while i <= 6:
print n*i, '\t',
i += 1
print
i = 0
while i <= 6:
printM(i)
i = i + 1
输出:
0 0 0 0 0 0 0
0 1 2 3 4 5 6
0 2 4 6 8 10 12
0 3 6 9 12 15 18
0 4 8 12 16 20 24
0 5 10 15 20 25 30
0 6 12 18 24 30 36
答案 2 :(得分:0)
i = 1
def printM(n):
i = 1 (added this line)
while i <= 6:
print n*i, '\t',
i = i + 1
print
while i <= 6:
printM(i)
i = i + 1
如果您修改这样的代码,您会得到以下结果:
1 2 3 4 5 6
2 4 6 8 10 12
3 6 9 12 15 18
4 8 12 16 20 24
5 10 15 20 25 30
6 12 18 24 30 36
我认为这就是你想要的。
你没有在你的功能中分配我。如果你想使用你以后使用的相同的i,你应该使用它作为函数的参数,然后看起来像这样
def printM(n, i):