Привет, ребята!
У меня недавно было требование сделать команды из бассейна около 100 человек с 5 членами за команду каждый.
Обычно это примет много усилий и времени, чтобы сделать команды. Но в итоге вы будете вызывать предвзятые в любом случае. Вот почему я хочу автоматизировать этот процесс. Поэтому я написал небольшой сценарий в Python, который я хочу поделиться с вами сейчас.
Требования
- Генерировать команды из листа Excel
- Формируйте команды из 5 членов из 102 человека
- отобразить влево, 2 человека
- Полностью случайная логика формирующих команд
Давайте начнем!
Получение данных CSV из Excel
Я использовал листы Google для сбора информации, поэтому мне нужно преобразовать его в CSV.
Вот данные после преобразования (удалить первую строку, поскольку они указывают на имена столбцов)
Я сохранил файл как data.csv.
Теперь приходит главная часть! Код:)
Код
Читать .Csv
Файлы в Python нам нужны CSV
упаковка. Который уже предварительно установлен. Это означает, что вам не нужно устанавливать ничего, чтобы следовать:)
Импорт пакетов
# To read data from CSV file import csv # To get random sub-data from random import sample
Создание списков для хранения данных
CSV.
Пакет, который мы импортировали ранее преобразующие каждую строку в файл CSV в список.
with open('data.csv', 'r') as file: reader = csv.reader(file) for i in reader: print(i)
Вышеуказанные выходы кода,
Как вы можете видеть, это преобразует каждую строку в файле CSV в список Python. Потрясающе правильно?
Теперь я создал 2 пустых списка для хранения данных
# stores the roll numbers of all members in one list persons = [] # stores lists of teams (lists inside inside list) teams = []
Теперь я только хочу, чтобы количество студентов быть в люди
список. Для этого нам нужно получить доступ к нему, используя его индекс.
with open('data.csv', 'r') as file: reader = csv.reader(file) for i in reader: persons.append(i[0])
Теперь приходит главная часть! формируя фактические команды.
Идея состоит в том, чтобы случайно выбрать цифры из люди
списки и делают эти 5 в качестве списка и вставьте их в Команды
список после вставки их в Команды
Список мне нужно удалить эти цифры из люди
Список, как может быть шанс, что одно число входит в 2 команда.
Для этого нам нужны Случайные
упаковка. Вот код
# Repeat the process until there are less than 5 members left while len(persons)>5: # picks 5 random numbers from persons list a = sample(persons,5) # add the list of numbers as a single team teams.append(a) # after adding remove them to avoid redundancy for i in a: persons.remove(i)
Вот и все! Теперь мы получили наши обязательные команды в Команды
список
Полный код
import csv from random import sample persons = [] teams = [] with open('data.csv', 'r') as file: reader = csv.reader(file) for i in reader: persons.append(i[0]) while len(persons)>5: a = sample(persons,5) teams.append(a) for i in a: persons.remove(i) for i in teams: print(i) print(persons)
Образец вывода
(только для справки)
Оригинал: “https://dev.to/manitej/using-csv-in-python-2492”