Найти - Пользователи
Полная версия: Рефакторинг bigdigits.py
Начало » Python для новичков » Рефакторинг bigdigits.py
1
nucluster
Привет, питонисты!
Я новичок в питоне. Читаю Саммерфильда (Программирование на 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()
Требуется критика, если говнокод то что глаза режет? Спасибо!
doza_and
Zero = """
  *** 
 *   *
 *   *
  *** """[1:]
Francisco
А можете написать эту программу целиком именно как должно быть по книге?
Я просто пробую и не выходит…
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