Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Ajuda em exercício

Olá, antes que alguém desconfie já antecipo ;) esse é sim um trabalho da faculdade e eu não estou aqui para pedir que alguém faça tudo como vejo muita gente fazer em outros fóruns! É apenas uma dúvida precisa que envolve regex e strings que estou com bastante dificuldade e não encontrei ajuda no stackoverflow.com, para que fique mais claro vou postar o enunciado, e em seguida o código que fiz até agora:

  1. Faça um programa que simule um lançamento de dados. Lance o dado 100 vezes e armazene os resultados em um vetor . Depois, mostre quantas vezes cada valor foi conseguido. Dica: use um vetor de contadores(1-6) e uma função para gerar numeros aleatórios, simulando os lançamentos dos dados. Dica: pesquise sobre geração de números aleatórios em Python

Certo, a primeira parte foi bem simples e eu dividi em dois arquivos, definindo uma função para gerar meus números aleatórios, mas dentro da funções do próprio programa em que o re.match era pra funcionar, não está atuando do modo como eu queria. Até o momento vou fazer a função para verificar somente a existência do número 1 no vetor, mais tarde implemento para os seguintes ou ainda faço um for para os demais.

Arquivo: lancamento_dados.py

from gerador_numeros import *

def conta_n_vezes(*lanc_dados):
    lancamentos = []
    lancamentos = lanc_dados

    for i in range(0,99):
        resultado = re.match('1', lancamentos[i])
        posicao = lancamentos[i]
        if resultado is not None:
            print("Nos lançamentos o numero 1 apareceu na(s) seguinte(s) posição(ões): %s" % posicao)
lanc_dados = []
lanc_dados = gera_lancamentos()

conta_n_vezes(*lanc_dados)

Arquivo: gerador_numeros.py

from gerador_numeros import *

def conta_n_vezes(*lanc_dados):
    lancamentos = []
    lancamentos = lanc_dados

    for i in range(0,99):
        resultado = re.match('1', lancamentos[i])
        posicao = lancamentos[i]
        if resultado is not None:
            print("Nos lançamentos o numero 1 apareceu na(s) seguinte(s) posição(ões): %s" % posicao)
lanc_dados = []
lanc_dados = gera_lancamentos()

conta_n_vezes(*lanc_dados)

Acho que é isso, se puderem me ajudem, vou continuar procurando soluções para o meu exercício.

3 respostas
solução!

André, você colocou o código errado aqui! Acho que repetiu o código do lançamento_dados.py no lugar do gerador_numeros.py. De qualquer maneira, tenho uma dúvida para você: Por que usar expressões regulares nesse exercício? Se entendi bem (qualquer coisa me corrija, por favor) o código precisa sortear 100 vezes um número entre 1 e 6 e armazená-los em uma lista, certo? Se for isso mesmo, há um método para listas que pode facilitar todo o seu trabalho, o count. Uso:

>>> list = [1,3,1,1,3,4,5]
>>> list.count(1)
3
>>> list.count(3)
2
>>> list.count(4)
1
>>> list.count(5)
1

Aguardo um feedback para saber se entendi corretamente o enunciado, hehe. Abraços!

Cara, muito show!! Vou marcar como solução :)

Respondendo tua dúvida, eu utilizei expressões regulares por que só conhecia pesquisa através de (adivinhe) expressões regulares, foi uma das últimas aulas que acompanhei no curso e não conhecia esse método que tu me citou. Sim, troquei a ordem dos arquivos, vou colocar o gerador_numeros.py pra ti saber como era o código BY (Before Yan hehehe)

from random import randint, uniform # importa n aleatorios (int e float)
import re # modulo para trabalhar com expressões regulares


def gera_lancamentos():
    lancamentos = []

    # gera um vetor com 100 valores (0 - 99), gerando valor
    # aleatório entre 1 e 6 e inserindo como string no vetor
    # para que a funcao 're' possa ser utilizada.
    for i in range(0, 100):  
        random = (randint(1, 6))
        lancamentos.append(str(random))
    return lancamentos

Que ótimo que você conseguiu resolver sua questão, então, André! Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software