2015-02-03 5 views
0

Итак, если вы попытаетесь создать простые часы, используя серию напечатанных «текстовых блоков». Я тестирую его сейчас со временем 9:50. Мой код ниже:Распечатайте ранее напечатанную строку

import time 
from datetime import datetime 
now = datetime.now() 
hour=now.hour 
minute=now.minute 
#This next part clears the console window 
import os 
clear = lambda: os.system('cls') 
clear() 
print() 
print() 
#This part converts military time to standard time and makes sure is printed correctly 
M="" 
if hour>=12: 
    M="PM" 
if hour<12: 
    M="AM" 
if hour>12: 
    hour=hour-12 
if minute<10: 
    minute="0"+minute 
#print (("%s:%s"+ " " + M) % (hour, minute)) 
def ninehour(): 
    #prints a 9 in the hour slot, includes colon 
    print("*********") 
    print("**  **") 
    print("**  ** **") 
    print("**  ** **") 
    print("*********") 
    print("  ** **") 
    print("  ** **") 
    print("  **") 
    print("*********") 
def fourminutetens(minute): 
    print("     **  **") 
    print("     **  **") 
    print("     **  **") 
    print("     *********") 
    print("       **") 
    print("       **") 
    print("       **") 
def fiveminutetens(minute): 
    #Prints a 5 in the tens slot (50 minutes) 
    print("     *********") 
    print("     **  ") 
    print("     **  ") 
    print("     *********") 
    print("       **") 
    print("       **") 
    print("     *********") 
def printhour(hour): 
    if hour==9: 
     ninehour() 
def printminuteten(minute): 
    if minute>39 and minute<50: 
     fourminutetens(minute) 
    if minute>49 and minute<60: 
     fiveminutetens(minute) 
printhour(hour) 
printminuteten(minute) 

Однако, Когда это будет напечатано на консоли, сначала будет напечатано «9:», а затем 5 будет напечатано под ним, а не рядом с ним, как часы (явная ошибка). есть ли способ исправить это, не создавая функцию для каждой возможной комбинации минут?

ответ

0

Чтобы перезаписать одну строку, вы могли бы использовать \r вместо символа новой строки:

#!/usr/bin/env python 
import sys 
import time 
from itertools import cycle 

for i, c in zip(range(101), cycle("\-/|")): 
    sys.stderr.write("\r{} {:.0%}".format(c, i/1e2)) 
    time.sleep(.3) 

Чтобы перезаписать несколько строк, вам нужно умение поставить курсор в произвольную позицию в терминале. Вы могли бы use blessings library. Вот code example.

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