Roman9234

smart_view

Jul 11th, 2024
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.68 KB | Writing | 0 0
  1. numbers = ['''
  2. 0000
  3. 00  00
  4. 00  00
  5. 00  00
  6. 0000
  7. ''',
  8. '''
  9. 1111
  10.  11
  11.  11
  12.  11
  13. 111111
  14. ''',
  15. '''
  16. 2222
  17. 22  22
  18.   22
  19.  22
  20. 222222
  21. ''',
  22. '''
  23. 3333
  24. 33  33
  25.   333
  26. 33  33
  27. 3333
  28. ''',
  29. '''
  30. 44  44
  31. 44  44
  32. 444444
  33.    44
  34.    44
  35. ''',
  36. '''
  37. 555555
  38. 55
  39. 55555
  40.    55
  41. 55555
  42. ''',
  43. '''
  44. 6666
  45. 66
  46. 66666
  47. 66  66
  48. 6666
  49. ''',
  50. '''
  51. 777777
  52.   77
  53.  77
  54. 77
  55. 77
  56. ''',
  57. '''
  58. 8888
  59. 88  88
  60. 8888
  61. 88  88
  62. 8888
  63. ''',
  64. '''
  65. 9999
  66. 99  99
  67. 99999
  68.    99
  69. 9999
  70. '''
  71. ]
  72.  
  73.  
  74. def get_ascii_art(number:int):
  75.     bill = number
  76.     nums = [] # разбиваем число на цифры
  77.     while number > 0:
  78.         nums.append(number%10)  # берем последнюю цифру
  79.         number//=10 # убираем последнюю цифру из числа
  80.     nums.reverse() # так как брали с конца, то разворачиваем, чтобы получилось исходное число
  81.     for i, num in enumerate(nums):
  82.         nums[i] = numbers[num].strip().split("\n") # заменяем каждое число на его арт. Арт убираем через strip от лишних пробелов, через сплит делим по строкам. ЭТО ВАЖНО
  83.         max_length = max([len(element) for element in nums[i]]) # так как строки в арте разных размеров, находим максимальную длину, а далее равняем всё по ней
  84.         for j in range(len(nums[i])): # проходимся по каждой строке
  85.             length = len(nums[i][j]) # узнаем ее длину
  86.             if length < max_length: # если она меньше самой большой у арта
  87.                 delta = max_length - length # то узнаем, насколько
  88.                 nums[i][j] += " " * delta # и добавляем такое же количество пробелов
  89.     # print([len(el) for el in nums[0]]) # принт для проверки количества длины
  90.     result = [] # теперь нужно склеить 1ю строку одного числа с 1й строкой 2,3 и 4 числа. Потом тоже самое со второй строкой - числа должны стоять все в одну строку
  91.     for strings in zip(*nums): # пройтись сразу по всем цифрам, сколько бы их не было
  92.         result.append("   ".join(strings)) # конкатенация
  93.     print("-"*40)
  94.     print("-"*40)
  95.     print("-"*40)
  96.     for line in result:
  97.         print(line)
  98.     print("-"*40)
  99.     print(f"Общая стоимость заказа: {bill} руб.")
  100.     print("-"*40)
  101.  
Advertisement
Add Comment
Please, Sign In to add comment