2015-10-18 54 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在上面的评论中已经有了一种方法。 –