Недавно стал учить Python. Написал программу, которая выводит на экран часы с использованием символов, например “*”. Но предполагаю, что объем кода получился слишком увесистый. Возможно ли минимизировать код, придя к тому же итогу, который получился?
import unicurses as curses
import keyboard
import locale
import time
import sys
locale.setlocale(locale.LC_ALL,('russian'))
stdscr=curses.initscr()
c=''
def number(x,y,num):
'''x,y: координаты вывода цифра на экран; num: цифра 0-9'''
if num==0:
curses.mvaddstr(y,x,'**********')
curses.mvaddstr(y+1,x,'* *')
curses.mvaddstr(y+2,x,'* *')
curses.mvaddstr(y+3,x,'* *')
curses.mvaddstr(y+4,x,'* *')
curses.mvaddstr(y+5,x,'* *')
curses.mvaddstr(y+6,x,'* *')
curses.mvaddstr(y+7,x,'* *')
curses.mvaddstr(y+8,x,'* *')
curses.mvaddstr(y+9,x,'* *')
curses.mvaddstr(y+10,x,'**********')
elif num==1:
curses.mvaddstr(y,x,' *')
curses.mvaddstr(y+1,x,' * *')
curses.mvaddstr(y+2,x,' * *')
curses.mvaddstr(y+3,x,' * *')
curses.mvaddstr(y+4,x,' * *')
curses.mvaddstr(y+5,x,' *')
curses.mvaddstr(y+6,x,' *')
curses.mvaddstr(y+7,x,' *')
curses.mvaddstr(y+8,x,' *')
curses.mvaddstr(y+9,x,' *')
curses.mvaddstr(y+10,x,' *')
elif num==2:
curses.mvaddstr(y,x,'**********')
curses.mvaddstr(y+1,x,' *')
curses.mvaddstr(y+2,x,' *')
curses.mvaddstr(y+3,x,' *')
curses.mvaddstr(y+4,x,' *')
curses.mvaddstr(y+5,x,'**********')
curses.mvaddstr(y+6,x,'*')
curses.mvaddstr(y+7,x,'*')
curses.mvaddstr(y+8,x,'*')
curses.mvaddstr(y+9,x,'*')
curses.mvaddstr(y+10,x,'**********')
elif num==3:
curses.mvaddstr(y,x,'**********')
curses.mvaddstr(y+1,x,' *')
curses.mvaddstr(y+2,x,' *')
curses.mvaddstr(y+3,x,' *')
curses.mvaddstr(y+4,x,' *')
curses.mvaddstr(y+5,x,'**********')
curses.mvaddstr(y+6,x,' *')
curses.mvaddstr(y+7,x,' *')
curses.mvaddstr(y+8,x,' *')
curses.mvaddstr(y+9,x,' *')
curses.mvaddstr(y+10,x,'**********')
elif num==4:
curses.mvaddstr(y,x,'* *')
curses.mvaddstr(y+1,x,'* *')
curses.mvaddstr(y+2,x,'* *')
curses.mvaddstr(y+3,x,'* *')
curses.mvaddstr(y+4,x,'* *')
curses.mvaddstr(y+5,x,'**********')
curses.mvaddstr(y+6,x,' *')
curses.mvaddstr(y+7,x,' *')
curses.mvaddstr(y+8,x,' *')
curses.mvaddstr(y+9,x,' *')
curses.mvaddstr(y+10,x,' *')
elif num==5:
curses.mvaddstr(y,x,'**********')
curses.mvaddstr(y+1,x,'*')
curses.mvaddstr(y+2,x,'*')
curses.mvaddstr(y+3,x,'*')
curses.mvaddstr(y+4,x,'*')
curses.mvaddstr(y+5,x,'**********')
curses.mvaddstr(y+6,x,' *')
curses.mvaddstr(y+7,x,' *')
curses.mvaddstr(y+8,x,' *')
curses.mvaddstr(y+9,x,' *')
curses.mvaddstr(y+10,x,'**********')
elif num==6:
curses.mvaddstr(y,x,'**********')
curses.mvaddstr(y+1,x,'*')
curses.mvaddstr(y+2,x,'*')
curses.mvaddstr(y+3,x,'*')
curses.mvaddstr(y+4,x,'*')
curses.mvaddstr(y+5,x,'**********')
curses.mvaddstr(y+6,x,'* *')
curses.mvaddstr(y+7,x,'* *')
curses.mvaddstr(y+8,x,'* *')
curses.mvaddstr(y+9,x,'* *')
curses.mvaddstr(y+10,x,'**********')
elif num==7:
curses.mvaddstr(y,x,'**********')
curses.mvaddstr(y+1,x,' *')
curses.mvaddstr(y+2,x,' *')
curses.mvaddstr(y+3,x,' *')
curses.mvaddstr(y+4,x,' *')
curses.mvaddstr(y+5,x,'*')
curses.mvaddstr(y+6,x,'*')
curses.mvaddstr(y+7,x,'*')
curses.mvaddstr(y+8,x,'*')
curses.mvaddstr(y+9,x,'*')
curses.mvaddstr(y+10,x,'*')
elif num==8:
curses.mvaddstr(y,x,'**********')
curses.mvaddstr(y+1,x,'* *')
curses.mvaddstr(y+2,x,'* *')
curses.mvaddstr(y+3,x,'* *')
curses.mvaddstr(y+4,x,'* *')
curses.mvaddstr(y+5,x,'**********')
curses.mvaddstr(y+6,x,'* *')
curses.mvaddstr(y+7,x,'* *')
curses.mvaddstr(y+8,x,'* *')
curses.mvaddstr(y+9,x,'* *')
curses.mvaddstr(y+10,x,'**********')
elif num==9:
curses.mvaddstr(y,x,'**********')
curses.mvaddstr(y+1,x,'* *')
curses.mvaddstr(y+2,x,'* *')
curses.mvaddstr(y+3,x,'* *')
curses.mvaddstr(y+4,x,'* *')
curses.mvaddstr(y+5,x,'**********')
curses.mvaddstr(y+6,x,' *')
curses.mvaddstr(y+7,x,' *')
curses.mvaddstr(y+8,x,' *')
curses.mvaddstr(y+9,x,' *')
curses.mvaddstr(y+10,x,'**********')
else:
curses.mvaddstr(y,x,'Неверный формат аргумента "num"')
while True:
curses.clear()
h=time.strftime('%H')
m=time.strftime('%M')
s=time.strftime('%S')
sec0=''.join(s[1])
sec1=''.join(s[0])
min0=''.join(m[1])
min1=''.join(m[0])
hour0=''.join(h[1])
hour1=''.join(h[0])
number(68,0,int(sec0))
number(56,0,int(sec1))
curses.mvaddstr(3,53,'*')
curses.mvaddstr(7,53,'*')
number(40,0,int(min0))
number(28,0,int(min1))
curses.mvaddstr(3,25,'*')
curses.mvaddstr(7,25,'*')
number(12,0,int(hour0))
number(0,0,int(hour1))
curses.mvaddstr(12,0,'Для выхода нажмите клавишу "q"')
curses.refresh()
if keyboard.is_pressed('q'): sys.exit()
curses.endwin()