Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 26, 2016 13:37:57

nucluster
Зарегистрирован: 2016-06-26
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Рефакторинг bigdigits.py

Привет, питонисты!
Я новичок в питоне. Читаю Саммерфильда (Программирование на Python 3. Подробное руководство.)
В первой главе есть такой пример - bigdigits.py, но так как я узучаю по разным книжкам и забежал немножко вперед, то решил немного “улучшить” код. Вот что получилось.

Zero = ["  ***  ",
        " *   * ",
        "*     *",
        "*     *",
        "*     *",
        " *   * ",
        "  ***  "]
One = [" * ", "** ", " * ", " * ", " * ", " * ", "***"]
Two = [" *** ", "*   *", "*  * ", "  *  ", " *   ", "*    ", "*****"]
Three = [" *** ", "*   *", "    *", "  ** ", "    *", "*   *", " *** "]
Four = ["   *  ", "  **  ", " * *  ", "*  *  ", "******", "   *  ",
        "   *  "]
Five = ["*****", "*    ", "*    ", " *** ", "    *", "*   *", " *** "]
Six = [" *** ", "*    ", "*    ", "**** ", "*   *", "*   *", " *** "]
Seven = ["*****", "    *", "   * ", "  *  ", " *   ", "*    ", "*    "]
Eight = [" *** ", "*   *", "*   *", " *** ", "*   *", "*   *", " *** "]
Nine = [" ****", "*   *", "*   *", " ****", "    *", "    *", "    *"]
Digits = [Zero, One, Two, Three, Four, Five, Six, Seven, Eight, Nine]
def int_any(in_strng):
    bases = (10, 2, 16, 8)
    for base in bases:
        try:
            out_int = int(in_strng, base)
            return out_int
            break
        except ValueError as err:
            if bases.index(base) < 3:
                continue
            else:
                print(str(err).replace('8', '10, 2, 16 or 8'))
def print_big(integer):
    if integer is not None:
        number = str(integer)
        Lines = [Digits[int(smbl)] for smbl in number]
        printLines = zip(*Lines)
        for line in printLines:
                print('  '.join(line))
def main():
    while True:
        try:
            print_big(int_any(input('Enter integer:')))
        except EOFError:
            break
main()
Требуется критика, если говнокод то что глаза режет? Спасибо!

Офлайн

#2 Июнь 26, 2016 14:27:17

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Рефакторинг bigdigits.py

Zero = """
  *** 
 *   *
 *   *
  *** """[1:]



Отредактировано doza_and (Июнь 26, 2016 14:27:36)

Офлайн

#3 Апрель 15, 2018 13:59:21

Francisco
Зарегистрирован: 2018-04-01
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Рефакторинг bigdigits.py

А можете написать эту программу целиком именно как должно быть по книге?
Я просто пробую и не выходит…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version