2016-08-18 2 views
0

파이썬 3에서는 기존 출력을 다른 것으로 대체하는 방법에 대한 해답이 있습니다. 이러한 대답은 print ('hello', end = '\ r')의 end = '\ r'광고 사용을 제안합니다. 이것은 잘 작동하지만 한 줄에 대해서만 작동합니다.파이썬에서 다중 행 기존 출력 바꾸기

아래에 게시 한 프로그램에서 나는 먼저 표 행렬의 표현 인 5 행을 출력합니다. 사용자는 하나의 숫자 (1-3)를 입력하라는 메시지를 표시 한 다음 사용자가 지정한 위치에 'X'가 표시된 행렬이 다시 인쇄됩니다.

그러나 알 수 있듯이 행렬은 초기 행렬 아래에 인쇄됩니다. 기존 출력을 어떻게 바꿀 수 있습니까?

end = '\ r'을 사용하면 커서가 줄의 처음으로 이동합니다. 그러나 이것은 5 행을 인쇄 한 다음 5 행의 시작이 아닌 첫 행의 처음으로 커서를 이동하려는 경우 (end = '\ r'과 같이) 나를 위해 작동하지 않습니다.

어떻게 이것을 파이썬으로 만들 수 있습니까?

from __future__ import print_function 
list1=[' '*11,'|',' '*7,'|',' '*10] 

def board(): 
    print ('\t \t | \t \t |') 
    print (list1) 
    print ('\t \t | \t \t |') 
    #print '\n' 
    print 

def playerone():  
    player1 = raw_input("PLAYER1: enter your position 1-3: ") 
    if (player1 == '1'): 
     list1[0]=' '*5 + 'X'+' '*5 
    elif (player1=='2'): 
     list1[2]=' '*3 + 'X'+' '*3 
    elif (player1=='3'): 
     list1[4]=' '*3 + 'X'+' '*6 
    else: 
     playerone() 

print ('our board is : ') 
board() 

playerone() 

print ('our board is :') 
board() 

답변

0

또 다른 커다란 단계 인 curses를 사용하지 않는 한, 여러 행으로 되돌릴 수 없습니다.

하지만 화면을 지우고 모든 것을 다시 표시하면됩니다.

print(chr(27) + "[2J") 

은 (clear terminal in python에 명시된 바와 같이) 화면

+0

내가 jupyter을 사용하고 있습니다. 그리고 파이썬 3에서는 이것이 작동하지 않습니다. 내 경우 엔 적어도. – spyimp

0

당신은 보드를 인쇄하기 전에 화면을 취소 할 수 있습니다 웁니다.

def clearscreen(numlines=100): 
"""Clear the console. 
numlines is an optional argument used only as a fall-back. 
""" 
import os 
if os.name == "posix": 
    # Unix/Linux/MacOS/BSD/etc 
    os.system('clear') 
elif os.name in ("nt", "dos", "ce"): 
    # DOS/Windows 
    os.system('CLS') 
else: 
    # Fallback for other operating systems. 
    print '\n' * numlines 

그리고 당신은 보드를 인쇄하기 전에 화면을 지우려면 clearscreen()를 호출 할 수 있습니다() 보드 내부

.

0

무엇 예를 들어 터미널의 분명한 명령을 사용하여 휴대용 솔루션을 사용하려고 시도에 대해 :

from __future__ import print_function 
import os 

class Game: 

    def __init__(self): 
     self.running = True 
     self.list1 = [' ' * 11, '|', ' ' * 7, '|', ' ' * 10] 

    def clear_sceen(self): 
     os.system('cls' if os.name == 'nt' else 'clear') 

    def draw_board(self): 
     print('our board is : ') 
     print('\t \t | \t \t |') 
     print(self.list1) 
     print('\t \t | \t \t |') 

    def check_inputs(self): 
     player1 = raw_input("PLAYER1: enter your position 1-3: ") 

     if (player1 not in ['1', '2', '3']): 
      self.running = False 
     else: 
      print(chr(27) + "[2J") 

      if (player1 == '1'): 
       self.list1[0] = ' ' * 5 + 'X' + ' ' * 5 
      elif (player1 == '2'): 
       self.list1[2] = ' ' * 3 + 'X' + ' ' * 3 
      elif (player1 == '3'): 
       self.list1[4] = ' ' * 3 + 'X' + ' ' * 6 

    def run(self): 
     self.clear_sceen() 

     while self.running: 
      self.draw_board() 
      self.check_inputs() 

     print(
      '\nGame ended! you should have pressed numbers between 1-3 :P') 

if __name__ == "__main__": 
    g = Game() 
    g.run()