Найти - Пользователи
Полная версия: Вывод часов на экран в виде символов
Начало » Python для новичков » Вывод часов на экран в виде символов
1
s_t_r_a_j
Недавно стал учить 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()
py.user.next
s_t_r_a_j
Возможно ли минимизировать код
  
#!/usr/bin/env python3
 
import unicurses as curses
import keyboard
import locale
import time
import sys
 
 
numbers = {
    0: ('**********',
        '*        *',
        '*        *',
        '*        *',
        '*        *',
        '*        *',
        '*        *',
        '*        *',
        '*        *',
        '*        *',
        '**********'),
    1: ('         *',
        '       * *',
        '     *   *',
        '   *     *',
        ' *       *',
        '         *',
        '         *',
        '         *',
        '         *',
        '         *',
        '         *'),
    2: ('**********',
        '         *',
        '         *',
        '         *',
        '         *',
        '**********',
        '*',
        '*',
        '*',
        '*',
        '**********'),
    3: ('**********',
        '         *',
        '         *',
        '         *',
        '         *',
        '**********',
        '         *',
        '         *',
        '         *',
        '         *',
        '**********'),
    4: ('*        *',
        '*        *',
        '*        *',
        '*        *',
        '*        *',
        '**********',
        '         *',
        '         *',
        '         *',
        '         *',
        '         *'),
    5: ('**********',
        '*',
        '*',
        '*',
        '*',
        '**********',
        '         *',
        '         *',
        '         *',
        '         *',
        '**********'),
    6: ('**********',
        '*',
        '*',
        '*',
        '*',
        '**********',
        '*        *',
        '*        *',
        '*        *',
        '*        *',
        '**********'),
    7: ('**********',
        '        *',
        '      *',
        '    *',
        '  *',
        '*',
        '*',
        '*',
        '*',
        '*',
        '*'),
    8: ('**********',
        '*        *',
        '*        *',
        '*        *',
        '*        *',
        '**********',
        '*        *',
        '*        *',
        '*        *',
        '*        *',
        '**********'),
    9: ('**********',
        '*        *',
        '*        *',
        '*        *',
        '*        *',
        '**********',
        '         *',
        '         *',
        '         *',
        '         *',
        '**********')
}
 
def number(x,y,num):
    '''x,y: координаты вывода цифра на экран; num: цифра 0-9'''
    if num in numbers:
        for i in range(11):
            curses.mvaddstr(y+i,x,numbers[num][i])
    else:
        curses.mvaddstr(y,x,'Неверный формат аргумента "num"')
 
def colon(x,y):
    '''x,y: координаты вывода двоеточие на экран'''    
    curses.mvaddstr(x,y,'*')
    curses.mvaddstr(x+4,y,'*')
 
def main():
    locale.setlocale(locale.LC_ALL,('russian'))
    stdscr=curses.initscr()
    while True:
        curses.clear()
        h=time.strftime('%H')
        m=time.strftime('%M')
        s=time.strftime('%S')
        sec0=int(s[1])
        sec1=int(s[0])
        min0=int(m[1])
        min1=int(m[0])
        hour0=int(h[1])
        hour1=int(h[0])
 
        number(68,0,sec0)
        number(56,0,sec1)
        colon(3,53)
        number(40,0,min0)
        number(28,0,min1)
        colon(3,25)
        number(12,0,hour0)
        number(0,0,hour1)
 
        curses.mvaddstr(12,0,'Для выхода нажмите клавишу "q"')
        curses.refresh()
        if keyboard.is_pressed('q'):
            break
    curses.endwin()
    return 0
 
if __name__ == '__main__':
    sys.exit(main())
s_t_r_a_j
ну собственно тоже самое, но благодарю, решение чуть другое конечно
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB