-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathpairwise.py
71 lines (66 loc) · 3.37 KB
/
pairwise.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# Вдохновлён: https://pairwise.teremokgames.com/
# Импортируем product из itertools для генерации декартового произведения
from itertools import product
def product_to_md(headers, *lists):
"""
Принимает список - заголовки столбцов и списки вариантов для каждого столбца в качестве аргументов
и возвращает строку, представляющую декартово произведение этих списков в формате таблицы Markdown
"""
# Генерируем декартово произведение
cartesian_prod = list(product(*lists))
# Подготавливаем таблицу в формате Markdown
# Добавляем заголовок
md = '| № | ' + ' | '.join(headers) + ' |\n'
# Добавляем разделитель заголовка
md += '|:-----:|'
for header in headers:
md += ':' + '-' * len(header) + ':|'
md += '\n'
# Добавляем каждую комбинацию в таблицу
test_num = 0
for row in cartesian_prod:
test_num += 1
md += '| ' + str(test_num).center(5) + ' | '
s = []
for i, item in enumerate(row):
s.append(str(item).center(len(headers[i])))
md += ' | '.join(s)
md += ' |\n'
print(f"Количество вариантов: {test_num}")
return md
# Списки вариантов:
lists = [
# Номер объявления
[-1, 0, 31, 49, 101, 10000, 1, 30, 50, 100, 10_001, "",
"меньше 0", "Цифро-буквенное 18Ж", "Спецсимволы !",
"Кириллица", "Латиница", "Цифры с точкой", "Цифры с запятой",
"Цифры с пробелом", "Цифры с дробью"],
# Цена (поле для ввода числа)
[1, 0, 1000000, 1000001,
"После запятой 1 символ", "После запятой 2 символа",
"После точки 1 символ", "После точки 2 символа",
"После дроби 1 символ", "После дроби 2 символа",
"меньше 0", "Цифро-буквенное 18Ж", "Спецсимволы !",
"Кириллица", "Латиница", "Цифры с точкой", "Цифры с запятой",
"Цифры с пробелом", "Цифры с дробью"
],
# Категория
['Транспорт', 'Недвижимость', 'Работа', 'Услуги', 'Для дома',
'Электроника', 'Хобби и отдых', 'Животные'],
# Качество товара (чек-бокс)
['Новое', 'Б/У'],
# Страна-производитель
['Россия', 'Китай', 'Другие'],
]
markdown_table = product_to_md(
['Номер объявления', 'Цена (поле для ввода числа)',
' Категория ',
'Качество товара (чек-бокс)',
'Страна-производитель',
],
*lists)
# Записываем результат в Markdown-файл
with open('pairwise.md', 'w', encoding='utf-8') as f:
print(markdown_table, file=f)
# import pandas as pd
# df = DataFrame()