2015-10-18 91 views
0

我想爲給定輸入n的每個案例打印N皇后。爲此,我必須爲j = n-1明確寫出條件,以在每個'n'列之後得到一個新行。如何在python3打印函數的for循環結尾處打印新行?

for i in range(n): 
    for j in range(n): 
     if j!=n-1: 
      if j==a[i]-1: 
       print('Q',end=' ') 
      else: 
       print('-',end=' ') 
     else: 
      if j==a[i]-1: 
       print('Q') 
      else: 
       print('-') 

輸出:

#One case in n=5 

- - Q - - 
Q - - - - 
- - - Q - 
- Q - - - 
- - - - Q 

對於不使用條件明確,我得到一個線輸出,這是顯而易見的。

- - Q - - Q - - - - - - - Q - - Q - - - - - - - Q 

有沒有什麼辦法可以在print = function的地方隱式寫條件?

for i in range(n): 
    for j in range(n): 
     if j==a[i]-1: 
      print('Q',(end=' ' if j!=n-1)) #this is not correct 
     else: 
      print('-',if j!=n-1: end=' ') #also not correct 

我使用的是Python 3.4.2的IDLE。

+0

你嘗試'打印(,結束=(」'如果j!= N-1,否則 '\ n'))'? – vaultah

+0

哦,那肯定是我錯過了。 :)謝謝,它給出了正確的結果。 –

+0

Python很棒! :D –

回答

2

只需在外循環結尾處打印換行符。

for i in range(n): 
    for j in range(n): 
     ... 
    print() 
+0

謝謝,但是我想在print = function的隱式條件中使用end =''的地方。 @vaultah在上面的評論中已經有了一種方法。 –