打印到以前打印的行

时间:2015-02-03 03:21:54

标签: python time printing console clock

所以我试图使用一系列打印的"文本块来创建一个简单的时钟"如果你愿意的话。我现在以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)

然而;当打印到控制台时,它将首先打印&#34; 9:&#34;然后5将打印在它下面而不是它旁边就像一个时钟显示(一个明显的错误)。反正有没有为每个可能的小时组合创建一个功能?

1 个答案:

答案 0 :(得分: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