Bóson Treinamentos em Ciência e Tecnologia

Programa em Python que sorteia e divide alunos em grupos em uma turma

Script para dividir alunos em grupos automaticamente em python

Programa em Python que sorteia e divide alunos em grupos em uma turma

Um problema que ocorre às vezes nos cursos que ministro, tanto em cursos técnicos quanto em cursos livres e de nível superior, é a formação de grupos pelos alunos para a realização de trabalhos e execução de projetos.

Essa situação ocorreu em um curso de programação recentemente. Os alunos precisavam se dividir em grupos, com até 5 membros por grupo, para trabalharem em um projeto de desenvolvimento de software com acesso a bancos de dados.

Como é o costume na instituição onde atuo, deixamos os alunos se auto-organizarem, de modo a praticarem assim a autonomia e trabalho em equipe.

Não deu certo.

Após mais de uma hora de conversas, mini-reuniões e muita discussão, eles não conseguiam entrar em acordo sobre quem ficaria em qual grupo, e a atividade estava quase se transformando em briga na sala de aula.

Sendo assim, tive de intervir. Resolvi que o melhor a fazer seria eu mesmo realizar a divisão dos grupos.

Mas como fazer isso de forma igualitária? Como atribuir alunos aos grupos aleatoriamente, sem nenhum viés de seleção?

Simples: deixando um programa escolher de forma automática os grupos e seus integrantes. Sendo assim, escrevi um pequeno script em Python para realizar essa tarefa para nós. E neste artigo reproduzo o programa, com uma explicação sucinta sobre seu funcionamento na sequência.

O que faz o programa

Temos aqui um programa em Python que sorteia números de uma lista que contém a quantidade de alunos que devem ser distribuídos nos grupos (identificados pelo número de chamada, que começa em 1).

O programa deve retornar grupos com no máximo x integrantes em cada, sem repetição – cada número sorteado é retirado da lista inicial.

A quantidade máxima de alunos em cada grupos também é informada pelo usuário. Podem haver grupos com menos alunos, caso a quantidade total de alunos não seja múltipla da quantidade de alunos por grupo.

Vamos ao código da aplicação.

Código

import random

# Perguntar ao usuário quantos alunos serão divididos em grupos
quantidade_numeros = int(input("Quantidade de alunos no total:"))

# Lista de números de 1 até a quantidade fornecida pelo usuário
numeros = list(range(1, quantidade_numeros + 1))

# Função para sortear e remover um número da lista
def sortear_numero(lista):
    numero_sorteado = random.choice(lista)
    lista.remove(numero_sorteado)
    return numero_sorteado

# Perguntar ao usuário quantos alunos no máximo por grupo
num_numeros_max_por_grupo = int(input("Quantos alunos no máximo por grupo? "))

# Inicializar a lista de grupos
grupos = []

# Gerar grupos com base na quantidade de alunos e na quantidade máxima por grupo
while numeros:
    tamanho_grupo = min(num_numeros_max_por_grupo, len(numeros))
    grupo = [sortear_numero(numeros) for _ in range(tamanho_grupo)]
    grupos.append(grupo)

# Exibir os grupos
print('\nGrupos formados:')
for i, grupo in enumerate(grupos):
    print(f'Grupo {i + 1}: {grupo}')

Teste do script

Exemplo de saída para uma turma com 23 alunos, divididos em grupos com no máximo cinco alunos por grupo:

Quantidade de alunos no total:
23
Quantos alunos no máximo por grupo? 
5

Grupos formados:
Grupo 1: [7, 2, 9, 14, 22]
Grupo 2: [5, 8, 13, 3, 11]
Grupo 3: [15, 16, 20, 12, 17]
Grupo 4: [21, 4, 10, 1, 18]
Grupo 5: [23, 6, 19]

Explicação

Conclusão

O programa funcionou como esperado, e os alunos foram divididos em grupos de forma satisfatória (com alguns reclamando que queriam ficar no grupo do amigo, mas paciência!)

Há espaço para melhorias neste programa? Sem dúvidas. Por exemplo, poderiam ser atribuídos ‘pesos’ aos alunos, para indicar aqueles que possuem maior conhecimento dos que tem maior dificuldade de aprendizado, e assim ao atribuir os alunos ao grupos, evitar de colocar os melhores alunos em um mesmo grupo, deixando os alunos com maior dificuldade juntos.

Essa é uma modificação que farei futuramente no script – ou você mesmo pode tentar realizar, e se quiser, postar o código nos comentários aqui abaixo para compartilhar com o público em geral.

Colabore com a Bóson Treinamentos

Ajude o canal adquirindo meus cursos na Udemy:

Adquira também livros e outros itens na loja da Bóson Treinamentos na Amazon e ajude o canal a se manter e crescer: https://www.amazon.com.br/shop/bosontreinamentos

Sair da versão mobile