2016-09-24 25 views
0

mpに達するために使用されるこのPythonコードがあります。ここでPythonの余分な改行

はコードです:

#!/bin/python 
def displayPathtoPrincess(n,grid): 
    m = "m" 
    p = "p" 

    for i in range(n): 
     if(m in grid[i]): 
      m_column = grid[i].find(m) 
      m_row = int(i + 1) 
      #print "{0}x{1} \n".format(int(i + 1), m_position + 1) 

     if(p in grid[i]): 
      p_column = grid[i].find(p) 
      p_row = int(i + 1) 
      #print "{0}x{1} \n".format(int(i + 1), p_position + 1) 

    down_up = p_row - m_row 
    if(down_up > 0): 
     print "DOWN\n"*down_up 
    else: 
     print "UP\n" 

    right_left = p_column - m_column 
    if(right_left > 0): 
     print "RIGHT\n"*right_left 
    else: 
     print "LEFT\n" 


m = input() 

grid = [] 
for i in xrange(0, m): 
    grid.append(raw_input().strip()) 

displayPathtoPrincess(m,grid) 

入力:

> 6 
> --- 
> --- 
> -m- 
> --- 
> --- 
> p-- 

予想される出力:

DOWN 
DOWN 
DOWN 
LEFT 

マイ出力:

DOWN 
DOWN 
DOWN 

LEFT 

私の出力でわかるように、プログラムは方向を変えるたびに新しい行を追加します。この新しい行が表示されないようにする方法に関するアイデアはありますか?

+0

あなたは '\ N 'の後に'印刷を必要としません:str.join

print "DOWN\n"*(down_up-1) + 'DOWN' print "RIGHT\n"*(right_left-1) + 'RIGHT' 

または使用:最小の修正が必要な数より少ない1を掛け、その後、最後のビットを追加することです'' \ n'をすべて削除すると、 –

+0

@ Jean-FrançoisFabreという昏睡状態で終了しない限り、次の出力が得られます。 DOWNDOWNDOWN LEFT –

答えて

0

あなたはハードコーディング各'DOWN'または'RIGHT'後にこれを行うたびに改行がある:

print "DOWN\n"*down_up 
    print "RIGHT\n"*right_left 

結果の文字列が'DOWN'または改行が続く'RIGHT'、指定された回数になります。つまり、そのような文字列は不要な改行で終了します。

print '\n'.join("DOWN" for i in range(down_up)) 
    print '\n'.join("RIGHT" for i in range(right_left)) 
+0

ありがとうございました! –

関連する問題