Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """Функция для присвоения названия и нумерации созданных объектов"""
- base = ['foo', 'foo(1)', 'foo(3)', 'eggs', 'eggs(1)', 'eggs(2)', 'eggs(13)', 'eggs(100)', 'apple', 'apple(13)', 'apple(14)',
- 'bar(1)', 'bar(5)', 'eggser1', 'egger', 'egger(3)', 'eggss3s', 'eggs(104)']
- def folder_name(name, base=base):
- if name not in base and len(name) > 0:
- base.append(name)
- return name
- else:
- if ')' in name and '(' in name and name[-2].isdigit():
- name_index_len = len(name.split('(')[-1][:-1])
- name_without_index = name[:-name_index_len - 2]
- indexes_in_db = [x.split('(')[-1][:-1] for x in base if name_without_index == x[:-(len(x.split('(')[-1][:-1])+2)]]
- digit_indexes = [x for x in indexes_in_db if x.isdigit()]
- if len(digit_indexes) == 0:
- result = name + '(1)'
- base.append(result)
- return result
- digit_indexes = max(map(lambda x: int(x), digit_indexes))
- result = name[:-(name_index_len+1)] + str(digit_indexes +1) + ')'
- base.append(result)
- return(result)
- indexes_in_db = []
- for name_in_db in base:
- if name_in_db.startswith(name) and name_in_db.endswith(')'):
- indexes_in_db.append(name_in_db[len(name):])
- digit_indexes = [x for x in indexes_in_db if x[1:-1].isdigit()]
- digit_indexes = [x.split('(')[1][:-1] for x in digit_indexes]
- if len(digit_indexes) == 0:
- result = name + '(1)'
- base.append(result)
- return result
- result = name + '(' + str(max(map(lambda x: int(x), digit_indexes)) + 1) + ')'
- base.append(result)
- return result
- if __name__ == '__main__':
- assert folder_name('foo') == 'foo(4)'
- assert folder_name('hello') == 'hello'
- assert folder_name('apple') == 'apple(15)'
- assert folder_name('bar') == 'bar'
- assert folder_name('bar(1)') == 'bar(6)'
- assert folder_name('foo(100)') == 'foo(100)'
- assert folder_name('foo(3)') == 'foo(101)'
- assert folder_name('') == '(1)'
- print("Tests successfully done.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement