2017-10-21 116 views
0

我看到我的同一个问题,但我想知道为什么我试图不工作。这是来自Zybook质疑的问题。在Python中使用嵌套for循环打印矩形

这里是练习:

编写嵌套循环打印矩形。样本输出给定的程序:

* * * 
* * * 

这是我建立了代码:

num_rows = 2 
num_cols = 3 

for num_rows in range(0,num_rows): 
    for num_cols in range(0,num_cols): 
     print('*', end=' ') 
    print('') 

输出是:

* * * 
* * 

问题:为什么不嵌套的for循环打印语句迭代第三次?当我设置嵌套循环为:

for num_cols in range(0,3): 

我收到我想要的3x2星号矩形的输出。如果num_cols变量被声明为3,那么输出语句不应该等于我想要的输出吗?

+1

因为您正在为以前定义的变量和'for'循环中使用的标识符'num_rows'和'num_cols'使用相同的标识符。将最新的命名重命名为'row'和'col',而不是'num_rows'和'num_cols'。 – dabadaba

+0

就是这样,谢谢。我正在冲刷我的书,我没有意识到这是我犯的错误。 –

+1

基本上你在循环中覆盖原始的'num_rows'和'num_cols'。 – dabadaba

回答

0

您正在使用它作为循环变量以及列数值覆盖num_cols变量。它在外循环的第一次迭代结束时被设置为2。你可以用num_col替换它。同样适用于num_rows以及

0

继续@ Karthik推理你为什么代码不正确,这里有一个与misc的解决方案。改进:

num_rows = 2 
num_cols = 3 

for _ in xrange(num_rows):  # xrange for efficient iteration 
    for _ in xrange(num_cols): # no need to unpack iteration variable 
     print '*',    # for Python 2, but use the function syntax for 3+ 
    print ''