2016-09-24 4 views
0

У меня есть этот код python, который используется для указания направления m для достижения p.Дополнительные строки в 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' после' печати 'если вы не закончили его с комой –

+0

@ Jean-FrançoisFabre, когда я удаляю все' \ n', я получаю следующий вывод: DOWNDOWNDOWN LEFT –

ответ

0

Вы жесткое кодирование новой строки после каждого 'DOWN' или 'RIGHT' каждый раз, когда вы делаете это:

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

Полученные строки будут 'DOWN' или 'RIGHT' с последующим переводом строкой, в указанном числе раза. Это означает, что такие строки заканчиваются нежелательной новой строкой. Самый маленький починка умножить на единицу меньше, чем необходимое количество, а затем добавить последний бит:

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

Или используйте str.join:

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

Большое вам спасибо! –

Смежные вопросы