#! /usr/bin/env python3
# -*- coding: utf-8 -*-
from random import choice
from string import ascii_letters, digits
from os import system, name, sys
def length_str():
""" Функция определяет длину строки. """
while True:
global len_str
len_str = input( "{0:40}: ".format("Введите длину строки", end = ''))
if not len_str.isdigit():
print("Необходимо ввести число, а не строку. ")
continue
if len_str < '0': #здесь что-то не то, но думать не хочется - всё и без этого работает.
print(u"Длина строки не может быть отрицательной.")
continue
if len_str == '0':
print(u"Строка не может быть пустой.")
continue
else:
len_str = int(len_str)
break
return len_str
def length_podstr():
""" Функция определяет длину подстроки. """
while True:
len_podstr = input( "{0:40}: ".format("Введите длину подстроки", end = ''))
if not len_podstr.isdigit():
print("Необходимо ввести число, а не строку. ")
continue
if int(len_podstr) < 0:
print(u"Длина подстроки не может быть отрицательной.")
continue
if len_podstr < '1':
print(u"Подстрока не может быть пустой.")
continue
if int(len_podstr) > len_str:
print(u"А ты - гениальный малый )")
continue
else:
len_podstr = int(len_podstr)
break
return len_podstr
def main():
len_str = length_str()
stroka = ''.join(choice(ascii_letters + digits) for i in range(len_str)) # генерируем строку
report_2 = {"Сгенерирована строка длиной %s элементов" %len_str: stroka}
for key, value in report_2.items():
print("{0:40}:{1:32}".format(key, value))
len_podstr = length_podstr()
k = len_str // len_podstr # рассчитываем количество элементов в списке из подстрок из 32 символов
# ... и заключить их в список
list_podstr = []
# ... строку нужно разделить на подстроки, чтобы в каждой было ровно 32 символа
for n in range(1, k + 1):
podstroka = stroka[len_podstr * (n - 1) :len_podstr * n]
report = {"Подстрока_" + str(n) : podstroka}
for key, value in report.items():
print("{0:40}:{1:32}".format(key, value))
list_podstr.append(podstroka)
# остаток длиной "остаток от деления" символа
ost = stroka[len_str - (len_str % len_podstr): len_str]
print("{0:40}:{1:32}".format("Oстаток длиной %s символа" %(len_str % len_podstr), ost))
print("\nСписок из подстрок: \n", list_podstr) # распечатка списка из 32 элементов из строки - всего 9 элементов
# Затем этот остаток нужно сложить с каждой подстрокой в списке
for n in range(0, k):
report_3 = {"Сумма %s элемента списка с подстрокой" %(n + 1) : list_podstr[n] + ost}
for key, value in report_3.items():
print("{0:40}:{1:50}".format(key, value))
if __name__ == "__main__":
system(['clear', 'cls'][name == sys.platform]) # чистка консоли
main()