2017-10-21 829 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 ''